最近、コンテナプラットフォームにアプリケーションをデプロイする際に、パッケージング時に docker イメージを生成する必要がありました。最初はインターネットで docker-maven-plugin プラグインを探したのですが、使い方が非常に面倒で、maven と dockerfile で余分な設定をたくさんする必要がありました。その後、公式 Github で作者が新しいプラグイン dockerfile-maven-plugin の使用を推奨していることがわかったので、これに置き換えましたが、このプラグインに関する関連情報はインターネット上にほとんどありません。ここに記録する pom 構成<プラグイン> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <構成> <skip>真</skip> </構成> </プラグイン> <!-- Dockerfile Maven プラグイン --> <プラグイン> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <バージョン>1.4.10</バージョン> <処刑> <!--<実行>--> <!--<id>デフォルト</id>--> <!--<目標>--> <!--<!–docker パッケージングを使用しない場合は、このゴールをコメントアウトしてください–>--> <!--<goal>ビルド</goal>--> <!--<goal>プッシュ</goal>--> <!--</目標>--> <!--</実行>--> </処刑> <構成> <リポジトリ>docker-reg.****.com/feedback/${artifactId}-${profiles.active}</リポジトリ> <タグ>${プロジェクト.バージョン}</タグ> <ビルド引数> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </構成> </プラグイン> Setting.xml 構成このファイルは Maven ディレクトリにあり、cd $M2_HOME/conf でアクセスできます。 pluginGroupsにcom.spotifyを追加する <プラグイングループ> <pluginGroup>com.spotify</pluginGroup> </プラグイングループ> ログインステータスログインが必要ですログインの確認方法には多くの落とし穴があります。 HABO で倉庫を非公開に設定する場合は、ログインして次の公式設定に従う必要があります。 <プラグイン> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <バージョン>${バージョン}</バージョン> <構成> <ユーザー名>リポジトリユーザー名</ユーザー名> <password>リポジトリパスワード</password> <リポジトリ>${docker.image.prefix}/${project.artifactId}</リポジトリ> <ビルド引数> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </構成> </プラグイン> ログインは必要ありませんしかし、私はhaborからイメージを自動取得するようにk8sを設定していたため、publicに設定しました。この場合、ログインする必要はありませんが、実行に失敗することがあります。このとき、~/.docker/config.jsonにあるこのウェブサイトの設定を削除する必要があります。 ~/.docker/config.json を編集します。 { 「認証」: { "192.168.87.110:5000": { 「認証」: 「YWRtaW46JKDtaW4xMjM=" }(ここで削除) }, "HttpHeaders": { 「ユーザーエージェント」: 「Docker-Client/18.09.0 (linux)」 } } これが空であることを確認した後もエラーが報告される場合は、docker login ... を再度実行すると成功します。 Maven マルチモジュール構成複数のモジュールの場合、パッケージング プラグインはアプリケーション サブモジュールに配置する必要があります。ルート pom に配置すると、パッケージ化は失敗します。 以下の状況:
この場合は2つのステップに分けることができます 最初のステップは、ルートディレクトリにあるすべてのモジュールをパッケージ化することです。 mvn クリーンパッケージ -P テスト 2番目のステップは、サブモジュールでデプロイコマンドを実行してイメージをパッケージ化することです。 mvn dockerfile:ビルド dockerfile:プッシュ このようにして、サブモジュールをミラーに正常にパッケージ化してプッシュすることができます。 ジェンキンスローカルでテストした後、このプロセスを Jenkins に移動し、いくつかの構成を行う必要があります。 Jenkins サーバーに Docker をインストールするここでは詳細には触れません。Maven の setting.xml およびその他の構成はローカルのものと同じです。 Jenkinsプロジェクト構成を変更するこの時点では、プロジェクトを 2 回パッケージ化する必要があるため (1 回はルート ディレクトリに、2 回目はミラーとしてサブディレクトリに)、mvn コマンドを 2 回実行する必要があります。これは以前とは異なり、最初の実行では引き続き Jenkins Build モジュールが使用されます。 2回目の実行はポストステップに配置され、コマンドによって実行されます。 cd サブモジュールディレクトリ mvn clean package -P $env dockerfile:build dockerfile:push このようにして、パッケージ化と画像作成の手順を完了できます。 dockerfile-maven-plugin の使い方ガイドはこれで終了です。dockerfile-maven-plugin の使い方についてさらに詳しく知りたい方は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: 長いデータを HTML で表示するときに処理する方法
>>: JavaScript strictモードの概要 strictを使用する
ワーカープロセスは、起動されると、まず自身の動作に必要な環境を初期化し、次に実行する必要があるイベン...
1. はじめにSelenium を使用して Web サイトからデータをスクレイピングしたいのですが、...
更新: MySQL の公式 Web サイトにアクセスして MySQL インストーラーをインストールし...
目次1. 説明2. インストール3. テスト1. 説明Vue Router は、Vue.js の公式...
この記事では、例を使用して、MySQL ストアド プロシージャで複数の値を返す方法について説明します...
初めて仮想マシンに MySQL をインストールしたとき、多くの問題が発生しました。ここでそれらを書き...
目次1. Jquery を使用する手順: (1)jsライブラリをインポートする(2)ページ読み込みイ...
REPLACE構文REPLACE(String,from_str,to_str)つまり、String...
Visual Studio Code は、Microsoft が開発した強力なテキスト エディター...
HTML5 は HTML 標準の次のバージョンです。ますます多くのプログラマーが、Web サイトの構...
1. pipとは何かpip は、Python パッケージの検索、ダウンロード、インストール、アンイ...
CentOS7 のデフォルトのデータベースは mariadb ですが、mysql を使っている人も多...
NULL 値によると、MySQL の NULL 値は単にデータがないことを意味します。NULL 値は...
メディアデバイスタイプの使用法の詳細な説明: <!DOCTYPE html> <h...
エンジン導入InnodbエンジンInnodb エンジンは、データベース ACID トランザクションを...