1. docker-maven-pluginの紹介私たちの継続的インテグレーションプロセスでは、プロジェクトエンジニアリングでは通常、Maven を使用してコンパイルおよびパッケージ化し、イメージを生成します。イメージをオンラインにすることで、オンライン効率が大幅に向上すると同時に、容量を迅速かつ動的に拡張し、迅速にロールバックできるため、非常に便利です。 docker-maven-plugin プラグインは、Maven プロジェクトでの簡単な構成を通じて、イメージを自動的に生成し、ウェアハウスにプッシュできるように設計されています。 2. 環境とソフトウェアの準備このデモ環境では、ローカルの Mac OX で操作しました。インストールされているソフトウェアとバージョンは次のとおりです。
注: ここでは、docker-maven プラグインを使用してイメージのビルド、イメージのアップロード、およびその他の操作を実行する Java Maven プロジェクトをテストするため、最初に Docker、Maven、および Java をインストールする必要があります。ここではインストール プロセスは無視されます。 3. デモ例3.1 DOCKER_HOSTの設定docker-maven-plugin プラグインのローカル Docker へのデフォルトの接続アドレスは localhost:2375 なので、最初に環境変数を設定する必要があります。 DOCKER_HOST=tcp://<ホスト>:2375 注: DOCKER_HOST 環境変数が設定されていない場合は、コマンド ラインで DOCKER_HOST を指定して実行できます。たとえば、ローカル マシンで DOCKER_HOST を指定します: DOCKER_HOST=unix:///var/run/docker.sock mvn clean install docker:build。 3.2 イメージ構築の例イメージをビルドする方法は 2 つあります。1 つ目は POM でビルド情報を指定する方法、2 つ目は既存の Dockerfile を使用してビルドする方法です。 ここでは、Java Maven プロジェクト mavendemo を例として説明します。 3.2.1 POMでビルドするためのビルド情報を指定する <ビルド> <プラグイン> <プラグイン> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <バージョン>1.0.0</バージョン> <構成> <imageName>mavendemo</imageName> <baseImage>java</baseImage> <maintainer>docker_maven [email protected]</maintainer> <作業ディレクトリ>/ROOT</作業ディレクトリ> <cmd>["java", "-version"]</cmd> <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint> <!-- 以下は、jar パッケージを docker コンテナの指定されたディレクトリにコピーするための構成です --> <リソース> <リソース> <ターゲットパス>/ROOT</ターゲットパス> <ディレクトリ>${project.build.directory}</ディレクトリ> <include>${project.build.finalName}.jar</include> </リソース> </リソース> </構成> </プラグイン> </プラグイン> </ビルド> 3.2.2 Dockerfileを使用したビルド pom.xml 構成 <ビルド> <プラグイン> <プラグイン> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <バージョン>1.0.0</バージョン> <構成> <imageName>mavendemo</imageName> <dockerDirectory>${basedir}/docker</dockerDirectory> <!-- Dockerfile パスを指定します --> <!-- ここでは、jar パッケージを docker コンテナの指定されたディレクトリ構成にコピーします。これは Dokokerfile に書き込むこともできます --> <リソース> <リソース> <ターゲットパス>/ROOT</ターゲットパス> <ディレクトリ>${project.build.directory}</ディレクトリ> <include>${project.build.finalName}.jar</include> </リソース> </リソース> </構成> </プラグイン> </プラグイン> </ビルド> ${basedir}/docker/Dockerfile 設定 FROM java メンテナー docker_maven [email protected] ワークディレクトリ /ルート CMD ["java", "-version"] エントリポイント ["java", "-jar", "${project.build.finalName}.jar"] 上記の 2 つの docker:build 実行方法は同じ効果があります。実行出力プロセスは次のとおりです。
実行が完了したら、docker images を使用して生成されたイメージを表示します。
3.3 コマンドの実行mvn clean package docker:buildはビルド操作のみを実行します mvn clean package docker:build -DpushImage はビルドを実行し、完了後にイメージをプッシュします。 mvn clean package docker:build -DpushImageTag はビルドを実行し、指定されたタグのイメージをプッシュします。 注: ここでは少なくとも 1 つの imageTag を指定する必要があります。これは POM で構成するか、コマンド ラインで指定できます。コマンドラインは次のように指定されます: mvn clean package docker:build -DpushImageTags -DdockerImageTags=imageTag_1 -DdockerImageTags=imageTag_2、POM ファイルで指定される構成は次のとおりです: <ビルド> <プラグイン> ... <プラグイン> <構成> ... <画像タグ> <imageTag>imageTag_1</imageTag> <imageTag>imageTag_2</imageTag> </画像タグ> </構成> </プラグイン> ... </プラグイン> </ビルド> 3.4 DockerコマンドをMavenステージにバインドするDocker コマンドをさまざまな Maven ステージにバインドできます。Docker をビルド、タグ、プッシュに分割し、それぞれ Maven のパッケージ ステージとデプロイ ステージにバインドできます。この時点で、ビルド、タグ、プッシュ操作全体を完了するには、mvn deploy を実行するだけで済みます。mvn build を実行すると、ビルドとタグ操作のみが完了します。さらに、特定のステップをスキップしたり、特定のステップのみを実行したりする場合は、POM ファイルを変更する必要はなく、特定の docker ステップをスキップするように指定するだけで済みます。たとえば、プロジェクトで自動化テンプレートがすでに構成されているが、今回はローカルセルフテストにイメージをビルドするだけで、プッシュステージを実行したくない場合は、プッシュ操作をスキップするためにパラメーター -DskipDockerPush を指定する必要があります。 <ビルド> <プラグイン> <プラグイン> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <バージョン>1.0.0</バージョン> <構成> <imageName>mavendemo</imageName> <baseImage>java</baseImage> <maintainer>docker_maven [email protected]</maintainer> <作業ディレクトリ>/ROOT</作業ディレクトリ> <cmd>["java", "-version"]</cmd> <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint> <リソース> <リソース> <ターゲットパス>/ROOT</ターゲットパス> <ディレクトリ>${project.build.directory}</ディレクトリ> <include>${project.build.finalName}.jar</include> </リソース> </リソース> </構成> <処刑> <実行> <id>ビルドイメージ</id> <phase>パッケージ</phase> <目標> <goal>ビルド</goal> </目標> </実行> <実行> <id>タグ画像</id> <phase>パッケージ</phase> <目標> <goal>タグ</goal> </目標> <構成> <image>mavendemo:latest</image> <新しい名前>docker.io/wanyang3/mavendemo:${プロジェクトバージョン}</新しい名前> </構成> </実行> <実行> <id>プッシュイメージ</id> <phase>デプロイ</phase> <目標> <goal>プッシュ</goal> </目標> <構成> <イメージ名>docker.io/wanyang3/mavendemo:${プロジェクトバージョン}</イメージ名> </構成> </実行> </処刑> </プラグイン> </プラグイン> </ビルド> 上記の例では、mvn package を実行するとビルドとタグの操作が実行され、mvn deploy を実行するとビルド、タグ、プッシュの操作が実行されます。 docker プロセスをスキップしたい場合は、次の操作を行うだけです。
たとえば、パッケージを実行するときにタグ処理をスキップしたい場合は、mvn package -DskipDockerTag が必要です。 3.5 プライベートDockerリポジトリアドレスの使用実際の作業環境では、イメージをプライベート Docker リポジトリにプッシュする必要があります。これは、docker-maven-plugin プラグインを使用して実現することも非常に簡単です。実現するにはいくつかの方法があります。 1. POMファイルのimageName操作を変更する ... <構成> <imageName>registry.example.com/wanyang3/mavendemo:v1.0.0</imageName> ... </構成> ... 2. POMファイル内のnewName操作を変更する ... <構成> <imageName>mavendemo</imageName> ... </構成> <実行> <id>タグ画像</id> <phase>パッケージ</phase> <目標> <goal>タグ</goal> </目標> <構成> <image>mavendemo</image> <newName>registry.example.com/wanyang3/mavendemo:v1.0.0</newName> </構成> </実行> ... 3.6 セキュリティ認証構成イメージを Docker リポジトリにプッシュする場合、共有リポジトリかプライベートリポジトリかに関係なく、セキュリティ認証が必要になることが多く、ログインが完了した後にのみ操作を実行できます。もちろん、コマンドライン docker login -u user_name -p password docker_registry_host からログインすることもできますが、自動化されたプロセスにはあまり便利ではありません。 docker-maven-plugin プラグインを使用すると、セキュリティ認証を簡単に実装できます。 まず、Maven 構成ファイル setting.xml に関連するサーバー構成を追加し、主に Docker レジストリのユーザー認証情報を構成します。 <サーバー> <サーバー> <id>私のDockerレジストリ</id> <ユーザー名>wanyang3</ユーザー名> <パスワード>12345678</パスワード> <構成> <メール>[email protected]</メール> </構成> </サーバー> </サーバー> 次に、pom.xml でサーバー ID を使用します。 <プラグイン> <プラグイン> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <バージョン>1.0.0</バージョン> <構成> <imageName>registry.example.com/wanyang3/mavendemo:v1.0.0</imageName> ... <serverId>my-docker-registry</serverId> </構成> </プラグイン> </プラグイン> 3.7 その他のパラメータdocker-maven-plugin プラグインも多くの便利な設定を提供します。ここにいくつかのパラメータを示します。
4. よくある質問1. ビルドイメージを実行すると、エラー 1 が発生します。
これは Docker サービスが開始されていないためです。Docker を開始してください。 2. ビルド イメージを実行すると、エラー 2 が報告されます。
これはイメージ名が間違っているためです。Docker イメージ名は [a-z0-9-_.] と一致する必要があります。 docker-maven-plugin のパッケージングイメージとプライベートリポジトリへのアップロードに関するこの記事はこれで終わりです。docker-maven-plugin のパッケージングイメージの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: ウェブサイトでページコンテンツや情報を直接コピーできない問題を解決する方法
>>: フレックスレイアウトによるシームレスなスクロールのサンプルコード
目次導入Homebrewをインストールするnvmをインストールするノードをインストールするインストー...
豊富なオプションを備えた強力なエディターとして、Vim は多くのユーザーに愛されています。この記事で...
<br />これは、Steven D が書いた Web フロントエンド開発デザインの基本...
目次axiosとは何ですか? Axios リクエストタイプ? Axiosはデフォルトのカスタム構成を...
Dockerfile の紹介Docker は、Dockerfile の内容を読み取ってイメージを自動...
目次使用されるAPI簡単な例人.ts親コンポーネントサブコンポーネント効果要約する使用されるAPI ...
この記事では、MySQL 8.0.15のインストールと設定方法を参考までに紹介します。具体的な内容は...
目次Linux ドライバーの共通機能 (copy_from_user open read write...
方法1: var a = [1,2,3]; var b = [4,5] b を連結します。 コンソー...
以前、Docker コンテナの起動後にボリュームをマウントできるかどうか尋ねられたことがあります。m...
個人的な実装のスクリーンショット:インストール: npm インストール vue-esign --sa...
1. mysql をインストールします。次のコマンドを実行して、YUM ソースを更新します。 rpm...
目次1. シナリオ2. 解決策3. 結論4. 参考文献1. シナリオ日常の開発およびテスト作業には ...
selinux ( Security-Enhanced Linux)は、Linux カーネル モジュ...
<br />これは私がずっと前に集めた記事です。皆さんの参考のために共有したいと思います...