DockerはGitを使用してJenkinsのリリースとテストプロジェクトの詳細なプロセスを実装します

DockerはGitを使用してJenkinsのリリースとテストプロジェクトの詳細なプロセスを実装します

1. Dockerをインストールする

PS: インストールの前提条件は、CentOS VMがインストールされていることです
1. Dockerをダウンロードするためのイメージソースを設定する

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2. Dockerをインストールする

yum -y で docker-ce をインストールします

3. Dockerサービスを開始する

systemctl ドッカーを起動する

4. 画像アクセラレーションを設定する

4.1. docker サービス構成を変更します: vim /usr/lib/systemd/system/docker.serviceと入力して、次のパラメータを見つけます: ExecStart=/usr/bin/dockerd

4.2. パラメータの後に次の行を追加します: --registry-mirror=https://xfaawkne.mirror.aliyuncs.com
4.3. この行の最終的なパラメータは次のとおりです。

ExecStart=/usr/bin/dockerd --registry-mirror=https://xfaawkne.mirror.aliyuncs.com -H fd:// --containerd=/run/containerd/containerd.sock

4.4. Dockerを再起動する

systemctlデーモンリロード
systemctl dockerを再起動します

2. カスタムネットワークアドレスを作成する

// cbnet ネットワークを作成 docker network create --subnet=172.18.0.0/16 cbnet
//docker ネットワークを削除するコマンド docker network rm ネットワーク IP 名 //docker ネットワークの定義を表示する docker network ls

3. Dockerがコンテナを作成する

1. mysql、redis、nginxコンテナを作成する

マイグレーション:
docker run -d --name mysql --network cbnet --ip 172.18.0.100 -p 3309:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
レディス:
docker run -itd --name redis -p 6379:6379 --network cbnet --ip 172.18.0.102 redis
nginx: いいえ
docker run --name nginx -p 80:80 --network cbnet --ip 172.18.0.105 nginx //そうでない場合は自動的にダウンロードされます

4. カスタムイメージ

すべてのローカルdocker imagesイメージを表示
ローカルイメージのdocker rmiイメージ識別子を削除します

1. プロジェクトの pom.xml ファイルの plugins の下に docker-maven プラグインを追加します。

<groupId>com.spotify</groupId>
				<artifactId>docker-maven-plugin</artifactId>
				<バージョン>1.0.0</バージョン>
				<構成>
					<dockerホスト>http://192.168.161.129:2375</dockerホスト>
					<imageName>creatorblue/spring-security</imageName>
					<画像タグ>
						<imageTag>最新</imageTag>
					</画像タグ>
					<forceTags>偽</forceTags>
					<dockerディレクトリ>${project.basedir}/src/main/resources</dockerディレクトリ>
					<リソース>
						<リソース>
							<ターゲットパス>/</ターゲットパス>
							<ディレクトリ>${project.build.directory}</ディレクトリ>
							<include>${project.build.finalName}.jar</include>
						</リソース>
					</リソース>
				</構成>
			</プラグイン> 

ここに画像の説明を挿入

2. リソースディレクトリに新しいDockerfileファイルを作成し、次の内容を入力します。

frolvlad/alpine-oraclejdk8:slim より
ユーザー ルート
ボリューム /tmp
springboot-security-0.0.1-SNAPSHOT.jar app.jar を追加します。
sh -c 'touch /app.jar' を実行します。
ENV JAVA_OPTS="-server -Xms256M -Xmx512M -XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=128M -Dfile.encoding=UTF-8 -Duser.timezone=GMT+08"
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ] 

ここに画像の説明を挿入

3. プロジェクトをパッケージ化し、プロジェクトを右クリックして、「実行」で「Maven ビルド」を選択します。次のコードを入力して「実行」をクリックします。

docker:build -P prod または cleanpack docker:build -P prod

コンソールに次の図が表示され、成功となります。

ここに画像の説明を挿入

4. 仮想マシンのdocker.service設定を変更し、ポート2375を開きます。

1. まずdocker.serviceファイルに入ります vim /usr/lib/systemd/system/docker.service
2. 次に、ポート2375を開きます -H tcp://0.0.0.0:2375
3. 最後にDockerを再起動します
systemctlデーモンリロード
systemctl dockerを再起動します

ここに画像の説明を挿入

5. 仮想マシンでカスタムイメージが成功したかどうかを確認します: docker images

ここに画像の説明を挿入

6. カスタムコンテナIPアドレスを構成する

docker run -d --name spring-security -p 8088:8080 -v /mnt/uploads : /mnt/uploads --network cbnet --ip 172.18.0.110
docker run -d --name spring-security2 -p 8089:8080 -v /mnt/uploads : /mnt/uploads --network cbnet --ip 172.18.0.111 

ここに画像の説明を挿入

最後に、MySQL、Redis、Nginx、Spring-securityコンテナを起動します。

5. nginxリバースプロキシを設定する

負荷分散を実現する (1 つの IP がログインした後、2 番目の IP は互いに混雑することなく直接ログインできる)

1. nginxディレクトリを表示する

ここに画像の説明を挿入

1. コンテナファイルをコピーします: docker cp nginx:/etc/nginx/conf.d/default.conf default.conf 
2. ファイルを編集する: vi default.conf

2. default.confファイルにコードを追加する

ここに画像の説明を挿入

default.conf ファイルを次のように変更します。

//同じイメージの上流に 2 つのコンテナがある my{
   サーバー 172.18.0.110:8080;
   サーバー 172.18.0.111:8080;
}

場所 / 春
   proxy_pass http://my;
}

6. プロジェクトをGitリポジトリにアップロードする

1.まず倉庫を作る

ここに画像の説明を挿入

2. 作成が完了したら、倉庫の住所をコピーします。

ここに画像の説明を挿入

3. アップロードするプロジェクトを選択し、プロジェクトを右クリックして、チームの下でプロジェクトの共有を選択します。

ここに画像の説明を挿入

最後に、「完了」をクリックして完了です。図に示すように:

ここに画像の説明を挿入

>タッチされたが送信されていないことを意味します
新しく作成されたものを表す
紅色雙箭頭、リモート ファイルとローカル ファイルが変更されたことを示しており、エラー メッセージが表示されます。

4. ローカル ウェアハウスに送信します。プロジェクトを右クリックし、[チーム] の下の [コミット] を選択します。

ここに画像の説明を挿入

5. リモートウェアハウスに送信し、次の図に示すようにプロジェクトを右クリックします。

ここに画像の説明を挿入

この記事の最初の手順からコピーした場合は、コピーする必要はありません。Eclipse はすでに同期しています。最初にコピーしなかった場合は、git リポジトリ アドレスをコピーするだけです。

ここに画像の説明を挿入

この時点でgit URLを更新すると、以下のように成功します。

ここに画像の説明を挿入

プルまたはアップロードできない問題が発生した場合は、詳細についてはhttps://blog.csdn.net/ZHANGDANDAN04/article/details/115725977を参照してください。

7. Jenkinsを使用してプロジェクトを公開およびテストする

公式サイトhttps://www.jenkins.io/にアクセスしてください
1. Jenkinsをインストールする

ここに画像の説明を挿入

2. 以下の手順に従って仮想マシンにインストールします。

ここに画像の説明を挿入

3. インストールが成功したら、Jenkinsを起動します。

ここに画像の説明を挿入

アクセスアドレス 仮想マシンの IP アドレス + Jenkins のデフォルトポート 8080

ここに画像の説明を挿入

ここに画像の説明を挿入

推奨プラグインをインストールすることを選択するだけです。

ここに画像の説明を挿入

ネットワークの問題により、一部のプラグインのインストールに失敗しました。Git は正常にインストールされました。[続行] をクリックして次の手順に進むことができます。

ここに画像の説明を挿入

4. 仮想マシンにGitをインストールする

yum インストール -y git

5. プロジェクトをビルドするために、Jenkins で新しいアイテムを作成します。手順は次のとおりです。

ここに画像の説明を挿入
ここに画像の説明を挿入

正常にビルドされたプロジェクトをクリックして構成し、[OK] をクリックします。

ここに画像の説明を挿入

6. Jenkinsの管理をクリック

ここに画像の説明を挿入

グローバルツールを設定して

ここに画像の説明を挿入

7. 仮想マシンにjdkをダウンロードし、jdkを構成する

注文:
yum インストール -y javacc-maven-plugin.noarch
//javacを検索
検索 / -name javac 

ここに画像の説明を挿入

8. Mavenを設定する
8.1. まず、Mavenの公式サイトにアクセスし、Mavenの圧縮パッケージをコピーします。

ここに画像の説明を挿入

8.2. ホームディレクトリに戻り、 wget+粘貼剛剛復制的maven地址

ここに画像の説明を挿入

ファイルを解凍する

ここに画像の説明を挿入

8.4. ファイルを解凍したら、Mavenに入り、cd confと入力し、settings.xmlファイルを変更し、Alibaba Cloudサーバーをロードして速度を上げます。

ここに画像の説明を挿入
ここに画像の説明を挿入

1. 編集コマンドを入力します: vi settings.xm
2. ミラーに Alibaba Cloud Server <mirror> を追加する
	  <!-- これにより、他のすべてが /public に送信されます -->
	  <id>アリユン</id>
	  <ミラーOf>*</ミラーOf> 
	  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
	</ミラー>
  <ミラー>
    <!--これは、パブリックスナップショットリポジトリを 
        以下のプロフィールを別の Nexus グループに転送します -->
    <id>aliyun パブリックスナップショット</id>
    <ミラーOf>*</ミラーOf> 
    <url>http://maven.aliyun.com/nexus/content/repositories/snapshots/</url>
  </ミラー>

8.5. 設定

ここに画像の説明を挿入

9. 最上位のMavenゴールを呼び出してビルドプロジェクト設定に入る

ここに画像の説明を挿入

Mavenプロジェクトをビルドし、コマンドclean install -P prodをパッケージ化して、「保存」をクリックします。

ここに画像の説明を挿入

10. 仮想マシン上のspring-securityパスを見つける

ここに画像の説明を挿入
ここに画像の説明を挿入

11. ビルドプロジェクトを完了する

ここに画像の説明を挿入

以下のインターフェースと起動は成功です!

ここに画像の説明を挿入

Jenkins の実行時に発生する一般的なエラー:
1. 仮想マシンでjdk yum install -y javacc-maven-plugin.noarchをダウンロードします。

ここに画像の説明を挿入

2. Jenkinsに十分なアクセス権がない

ここに画像の説明を挿入

権限を解決するコマンドは vim /etc/sysconfig/jenkins です。 

ここに画像の説明を挿入

3. 実行シェルが間違ったプロジェクト名を書き込む

ここに画像の説明を挿入

13. テストURLアクセスアドレス

ここに画像の説明を挿入

最後に、プロジェクトをアップグレードする必要がある場合は、まずコードの記述を完了し、それをコミットして Git リポジトリにプッシュし、Jenkins で再構築して、新しいインターフェースに再度アクセスします。次の例の手順を参照してください。

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

補足: 複数のコンテナを同時に起動するスクリプトを書くことができます
1. 複数のコンテナを起動するスクリプトを書く: vi auto.sh
2. 例: 3つのコンテナを起動する

 !/bin/bash
docker run -d --name spring-security -p 8087:8080 -v /mnt/uploads:/mnt/uploads --network cbnet --ip 172.18.0.10 cetorblue/spring-security
docker を実行します -d --name spring-security -p 8088:8080 -v /mnt/uploads : /mnt/uploads --network chnet --ip 172.18.0.10 Creatorblue/spring-security
docker run_ -d --name spring-security -p 8089:8080 -v /mnt/uploads : /mnt /uploads --network chnet --ip17.18.0.10 cretorblue/spring-security

最後に、 sh auto.shを起動します。

Git を使用した Docker による Jenkins リリースおよびテスト プロジェクトの実装の詳細なプロセスに関するこの記事はこれで終わりです。Docker Jenkins リリース テスト プロジェクトの関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Centos7+Docker+Jenkins+ASP.NET Core 2.0 の自動リリースとデプロイメントの実装
  • DockerでJenkinsをインストールし、初期プラグインのインストール失敗の問題を解決する
  • Docker+Jenkinsを使用して自動的にビルドおよびデプロイする
  • docker+jenkins+node.js の自動デプロイメント環境をゼロから構築する方法

<<:  純粋なCSSを使用してスイッチ効果を実現する

>>:  ウェブサイトのパフォーマンスを向上させるためのコンテンツ関連の10の原則

推薦する

Vue の proto ファイルの関数呼び出しのグラフィカルな説明

1. protoをコンパイルするすべての .proto ファイルを保存するために、src フォルダー...

Dockerコンテナでyumを呼び出すときのエラーの解決方法

dockerfile またはコンテナ内で yum を実行すると、エラーが報告され、ソースが見つかりま...

ボタントリガーイベントを使用して背景色の点滅効果を実現します

背景色の点滅効果を実現するには、次のコードを <body> 領域に追加するだけです。コー...

Centos システムの指定された場所に Nginx をインストールする方法

Centos システムの指定された場所に Nginx をインストールするにはどうすればいいですか?は...

Workbench を介して MySQL データベースにリモートでアクセスする方法の詳細な説明

序文Workbench が 1 台のコンピューターにインストールされており、別の Ubuntu サー...

MySQLクエリが遅い理由

目次1. 遅いところはどこですか? 2. 不要なデータをクエリしましたか? 1. 不要なレコードをク...

Vue ベースの円形スクロールリスト機能を実装する

注: 親コンテナーに高さと :data='Array' および overfolw:h...

熟練デザイナーの7つの原則(1):フォントデザイン

まあ、あなたはデザインの達人かもしれませんし、あるいはそれは大げさすぎるかもしれませんが、少なくとも...

Select はダブルクリック dbclick イベントをサポートしていません

XML/HTML コードコンテンツをクリップボードにコピー< div クラス= "c...

VMwareがwin10ホームバージョンに64ビットオペレーティングシステムをインストールできない問題を解決します

問題の説明VMware Workstationが新しい仮想マシンを作成し、64ビットオペレーティング...

Linux チェックアップ、Linux の状態 (ネットワーク IO、ディスク、CPU、メモリ) を把握

目次1. コアコマンド2. 共通コマンド3. コアコマンドの詳細な説明3.1、ps補助3.2 トップ...

httpsウェブサイトにリファラーhttpsとhttpジャンプリファラーを送信させる方法

この記事では、HTTP プロトコルのリファラーのメタデータ パラメータの提案について説明します。この...

Vueのシンプルな状態管理ストアモードを理解する方法

目次概要1. store.jsを定義する2. store.js を使用するコンポーネント3. 成果を...

MySQL InnoDB ロックの概要

目次1. 共有ロックと排他ロック2. 意図ロック3. レコードロック4. ギャップロック5. ネクス...