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 選

推薦する

Dockerコンテナにnginxを簡単にデプロイするプロセスの分析

1. コンテナにnginxサービスをデプロイするcentos:7 イメージはコンテナを実行し、このコ...

VMware Workstation Pro は Win10 ピュア バージョンのオペレーティング システムをインストールします

この記事では、VMware Workstation Pro で Win10 オペレーティング システ...

MySQL 接続制御プラグインの紹介

目次1. 接続制御プラグイン(connection_control)の紹介1.1 connectio...

面接で聞かれる可能性のあるCSSに関する質問

この記事は、100 回書かれ、質問された CSS の質問を記念するためのものです。聞く: CSS セ...

MySQL OOM (メモリオーバーフロー) の解決策

OOM は「Out Of Memory」の略で、メモリオーバーフローを意味します。メモリ オーバーフ...

Docker に共通コンポーネント (mysql、redis) をインストールする方法

Dockerはmysqlをインストールします docker search mysql 検索 dock...

3分でUbuntu 16.04を初期化し、Java、Maven、Docker環境をデプロイする

Fast-Linux プロジェクト アドレス: https://gitee.com/uitc/Fas...

HTML チュートリアル: よく使われる HTML タグのコレクション (4)

導入された HTML タグは、必ずしも XHTML 仕様に完全に準拠しているわけではありません。実際...

Centos7 サーバーで jar パッケージ プロジェクトを開始する最良の方法

序文Linux 上で jar パッケージを実行する方法は誰もが知っています。なぜ別々に話したいのでし...

MySQLにおけるトランザクションの永続性実装原理の詳細な説明

序文データベース トランザクションに関して言えば、トランザクションの ACID 特性、分離レベル、解...

Tomcatサーバーのセキュリティ設定方法

Tomcat は、Java Community Process を通じて Sun が開発した、広く使...

MySQLテクノロジーにおけるInnoDBロックの詳細な説明

目次序文1. ロックとは何ですか? 2. InnoDBストレージエンジンのロック2.1 ロックの種類...

ES6 クラス継承を使用してゴージャスなボール効果を実現する方法

目次導入実装手順キャンバス環境を作成するライティングボールBallクラスを継承するMoveBallク...

Linux のハードリンクとソフトリンクの原理と使用法の分析

Linux システムには、ファイル共有を解決するために使用できるリンク ファイルと呼ばれる種類のファ...

Windows DNS サーバーに「ワームレベル」の脆弱性が露呈、17 年間存在

脆弱性の紹介SigRed の脆弱性はワーム化可能であるため非常に危険です。つまり、ユーザーの介入なし...