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

推薦する

Zabbix redis 自動ポート検出スクリプトは json 形式を返します

自動検出を行う際には、ポートなどの情報を取得してjson形式で返すスクリプトが必ず存在します。Red...

CSS3 で作成された背景グラデーションアニメーション効果

成果を達成する 実装コードhtml <h1 class="text-light&qu...

MySQL 8.0 の新機能 - 管理ポートの使用の概要

目次序文接続管理追加の接続管理ポート要約する序文皆さんの多くは、次のようなエラー メッセージに遭遇し...

ページネーションの例とベストプラクティス

<br />構造と階層により複雑さが軽減され、読みやすさが向上します。記事やサイトが整理...

el-table のテーブルを最適化するために仮想リストを使用する方法についての簡単な説明

目次序文解決具体的な実装満たすべき前提条件質問序文テーブルをよく使用します。データ量が多い場合は直接...

コンテナDockerCommitを介してイメージを送信し、DockerPushでイメージをプッシュします。

ローカルでコンテナを作成した後、このコンテナに基づいてローカル イメージを作成し、このイメージを D...

Docker、プレーヤー機能を備えたCMSオンデマンドシステムを構築

目次文章1. 機械を準備する2. Dockerをインストールする1. 依存パッケージをインストールす...

VUE+Canvasはデスクトップピンボールブロック破壊ゲームのサンプルコードを実装します

誰もがピンボールやレンガ崩しのゲームをプレイしたことがあるでしょう。左と右のキーを使用して、下にある...

JS 関数のアンチシェイクと関数スロットリングを理解する方法

目次概要1. 関数デバウンス2. 機能スロットリング(スロットル)概要関数アンチシェイクと関数スロッ...

Nexus をベースに Alibaba Cloud プロキシ ウェアハウスを構成するプロセスの分析

Nexus のデフォルトのリモートリポジトリは https://repo1.maven.org/ma...

Vue.jsクラウドストレージで画像アップロード機能を実現

序文ヒント:以下はこの記事の主な内容です。以下のケースを参考にしてください。 1. オブジェクトスト...

プロジェクトの再構築からプロジェクトにおける CSS3 カスタム変数の使用について話す

CSS3変数について変数を宣言するときは、変数名の前に 2 つのハイフン ( -- ) を追加します...

JavaScript CollectGarbage 関数の例

まず、メモリ解放の例を見てみましょう。 <スクリプト言語="JavaScript&q...

MySQLでページングクエリを実装する方法

SQL ページング クエリ:背景会社のシステムには、構成管理用のプラットフォーム、いわゆる CRUD...

Tomcat でのサーブレットの作成と実装に関する深い理解

1. サーブレットとは何か1.1. 正式な言葉で説明する:サーブレットは、動的な Web リソースを...