Jenkins は Docker イメージを構築し、Harbor ウェアハウスにプッシュします

Jenkins は Docker イメージを構築し、Harbor ウェアハウスにプッシュします

Spring Boot プロジェクトでは、Jenkins を使用して Docker イメージを構築し、それを harbor リポジトリにプッシュし、コンテナーを起動してから、ローカルで実行中のコンテナーにイメージをプルします。

Dockerファイル

場所: ルートディレクトリ内、src と同じレベル

java:8より
 # 著者: MAINTAINER zhaoyc
ボリューム /tmp
#ARG JAR_FILE
#jarパッケージをコンテナに追加し、名前をapp.jarに変更します
ターゲット/*.jar app.jarを追加します
bash -c 'touch /app.jar' を実行します。
ENV TZ=アジア/上海
#RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
エクスポーズ81
#CMD ["-jar", "/app.jar"] "nohup" "&"
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

ドキュメント

Mavenのバージョン番号を1.4.2に指定するには、他のバージョンはテストされていないため、メインクラスが見つかりません。

<プラグイン>
 <!-- mavn jar パッケージ起動プラグイン -->
	<プラグイン>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-maven-plugin</artifactId>
		<バージョン>1.4.2.RELEASE</バージョン>
	</プラグイン>
</プラグイン>

Jenkins の設定

システム設定構成Docker – Dockerプラグインをインストールする必要があります

ここに画像の説明を挿入

新しいMavenプロジェクト構成パラメータビルドを作成する

ここに画像の説明を挿入

プロジェクトのgitリポジトリ構成

ここに画像の説明を挿入

mvn build ビルド構成

ここに画像の説明を挿入

Dockerイメージをビルドし、リポジトリ構成にプッシュする

ここに画像の説明を挿入

リポジトリにプッシュした後スクリプトを実行する

#!/bin/bash
#IMAGE=${モジュールファイル名}
#TAG=${タグ}
画像=$1
タグ=$2
PULL_IMAGE=192.168.1.100:81/プロジェクト/${イメージ}:${タグ}
# 減算を計算し、小数点の前に 0 を付けて出力します (例: 0.3-0.1=0.2)
CURRENT_IAMGE=`echo "$TAG - 0.1" | bc | awk '{printf "%.1f", $0}'`

echo '=================Harbor 倉庫へのログインを開始します================='
docker ログイン http://192.168.1.100:81 -u admin -p Harbor12345

[ $? -eq 0 ]の場合;
    echo '==================ログイン成功=================='
それ以外
    echo '==================ログインに失敗しました=================='
    戻り値 1
フィ

echo '=================イメージの取得を開始します================='
docker pull ${PULL_IMAGE}
echo '=================イメージのプル終了================='

# コンテナ操作の更新 echo '=================イメージの実行を停止================='
docker stop ${IMAGE}_${CURRENT_IAMGE}
echo "10秒待ってください"
睡眠10

echo '=================ミラーの開始を開始します================='
#if [ ${IMAGE} == "java-demo" ]; then
# docker run -d --name ${IMAGE}_${TAG} -p 9001:9001 ${PULL_IMAGE}
#elif [ ${IMAGE} == "spring-cloud-eureka-client-demo" ]; 次に
# docker run -d --name ${IMAGE}_${TAG} -p 9012:9012 ${PULL_IMAGE}
#fi
docker run -d --name ${IMAGE}_${TAG} -p 9001:9001 ${PULL_IMAGE}
[ $? -eq 0 ]の場合;
    echo '================ミラーリングが正常に開始されました================='
それ以外
    echo '================ミラーの起動に失敗しました================'
    戻り値 1
フィ

Jenkins が Docker イメージをビルドして Harbor リポジトリにプッシュする方法についての記事はこれで終わりです。Jenkins が Docker イメージをビルドする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker buildx を使用してマルチプラットフォーム イメージをビルドし、プライベート リポジトリにプッシュする方法
  • Dockerを使用してクローンリポジトリを使用してGitイメージを構築する
  • Docker用国産イメージウェアハウスの使い方
  • docker-maven-pluginはイメージをパッケージ化し、プライベートウェアハウスにアップロードします。
  • Dockerイメージリポジトリの使い方
  • Docker プライベート イメージ リポジトリの Alibaba Cloud 展開手順
  • Dockerコンテナ練習用イメージウェアハウス

<<:  製品を選択した後、右下隅に√記号を表示するための純粋なCSS

>>:  JavaScript の便利な配列トリック 12 選

推薦する

ミニプログラムはリストのカウントダウン機能を実装します

この記事の例では、ミニプログラムでリストカウントダウンを実装するための具体的なコードを参考までに共有...

Oracle VM VirtualBox の CentOS7 オペレーティング システムのインストール チュートリアル図

目次インストール手順環境設定実行構成インストール手順ダウンロードアドレス: バージョン6.0 最初に...

Python3.6-MySql 挿入ファイルパス、バックスラッシュをなくす解決策

以下のように表示されます。上記のように、置き換えるだけです。 Python3.6-MySql でファ...

DockerとVMwareの競合を解決する

1. Dockerの起動の問題:問題は解決しました: Hyper-V をオンにする必要があります (...

MySQL のインデックスの種類と基本的な使用例

目次索引- 総合索引- ユニークなインデックス- 主キーインデックス- 複合インデックス- 全文索引...

React の 10 個のフックの紹介

目次ReactHook とは何ですか? Reactは現在フックを提供している1. 使用状態2.use...

Vueはユーザー名が使用可能かどうかの検証を実装します

この記事では、ユーザー名が使用可能かどうかを確認するためのVueの具体的なコードを例として紹介します...

Windows システムに mysql5.7.21 をインストールするための詳細なチュートリアル

MySQL インストーラーは、MySQL ソフトウェアのあらゆるニーズに対応する、使いやすいウィザー...

ウェブサイトのBGM実装方法

個々のウェブマスターにとって、自分のウェブサイトをいかにユニークで個性あふれるものにするかは、常に絶...

MySQLでMyISAMストレージエンジンをInnodbに変更した操作記録のまとめ

一般的に、MySQL はデフォルトでさまざまなストレージ エンジンを提供しており、次のように表示され...

jQueryはすべての選択と逆選択操作ケースを実装します

この記事では、全選択と逆選択操作を実装するためのjQueryの具体的なコードを参考までに共有します。...

Centos7 で yum を使用して Ceph 分散ストレージをインストールするチュートリアル

目次序文yumソース、epelソースを設定するCephソースの設定Cephとそのコンポーネントをイン...

Dockerをクリーンアンインストールする方法の詳細な説明

まず、サーバー環境情報: アンインストールの理由:しばらくするとホストマシンのディスクが100%にな...

Node.js を使用して C# のデータ テーブル エンティティ クラス生成ツールを作成する方法

Microsoft は T4 テンプレートを提供していますが、使用するのが非常に難しいと思います。ス...

CSSのoutline-offsetプロパティを使用してプラス記号を実装する

次のような初期コードがあると仮定します。 <!DOCTYPE html> <htm...