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の原則

推薦する

MySQL の 6 つの一般的な制約タイプの詳細な説明

目次序文1.nullでない2. ユニーク3. デフォルト4.主キー自動増分主キー5. 外部キー6.チ...

回転灯効果を実現するWeChatアプレットの例

序文日常の開発では、テキストの水平スクロール効果(一般にカルーセルと呼ばれる)によく遭遇します。これ...

テーブルの最大幅と最小幅を設定する際の互換性の問題と解決策の詳細な説明

テーブル内の min-width と max-width プロパティの設定 <テーブル>...

Nginx+ModSecurity セキュリティモジュールの導入

目次1. ダウンロード2. 展開1.Nginxのデプロイメント2. ModSecurityの展開3....

要素タイムラインの実装

目次コンポーネント - タイムラインカスタムノードスタイルカスタムタイムスタンプコンポーネント - ...

MySQLのFreeListメカニズムの詳細な説明

1. はじめにMySQL が起動すると、BufferPool が初期化されます。クエリ操作を実行する...

MySQL データをエクスポートする際の secure-file-priv 問題の解決方法

エラー 1290 (HY000) : MySQL サーバーは –secure-file-priv オ...

新しい CSS display:box プロパティの詳細な説明

1. ディスプレイボックス;要素にこのプロパティを設定すると、display:inline-bloc...

Windows 上の Docker にさまざまなソフトウェアをインストールする詳細なプロセス

1. MySQLをインストールする # docker で mysql をダウンロード docker ...

MySQL 5.6 から 5.7 にアップグレードする際のマスター スレーブ遅延問題のトラブルシューティング

最近、Zabbix データベースを MySQL 5.6 から 5.7 にアップグレードしたときに、マ...

Docker可視化ツールPortainerの導入と中国語翻訳

#docker 検索#docker プルポーター1. イメージを取得した後、中国語パッケージをダウン...

MySQL ストアド プロシージャのエラー処理例の詳細な説明

この記事では、例を使用して MySQL ストアド プロシージャのエラー処理について説明します。ご参考...

Windows Server 2008 R2 に MySQL 5.7.10 をインストールする手順

MSIインストールパッケージを使用してインストールするご使用のオペレーティング システムに応じて、対...

MySQL における Decimal 型と Float Double 型の違い (詳細説明)

MySQL には、10 進数などの標準データ型だけでなく、float や double などの非標...

Windows Server 2012 でファイル サーバーを構築するための詳細な手順

ファイル サーバーは、企業内で最も一般的に使用されるサーバーの一つであり、主にファイル共有を提供する...