最近、コンテナプラットフォームにアプリケーションをデプロイする際に、パッケージング時に 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を使用する
目次リアルタイム更新は必要ですか?マテリアライズド ビュー ツール (Flexviews)カウントテ...
CEP - 複合イベント処理。ご注文後、一定期間内にお支払いの確認が取れませんでした。タクシーの配...
目次序文1. Vue2 のライフサイクルインスタンスのライフサイクルその他のライフサイクルフック2....
テクノロジーファンHTMLウェブページ、知っておくべきYouyou が開発した vue フロントエン...
最適化によって発生する可能性のある問題最適化は必ずしも単純な環境で実行されるわけではなく、実稼働環境...
CSS3以前は、グラデーション画像は背景画像としてのみ使用できました。 CSS3 のグラデーション構...
あいまいクエリにOracleデータベースを使用する場合、コンソール エラーは次の図に表示されます。理...
この記事では、検証コードカウントダウンボタンを実装するためのVueの具体的なコードを例として紹介しま...
目次React アップロードファイル表示の進行状況デモフロントエンドにReactアプリケーションを素...
1. 親divは疑似クラスafterとzoomを定義します <スタイル タイプ="...
目次DOM処理配列方法要約するDOM処理DOM はドキュメントの構造化された表現を提供し、スクリプト...
目次1. proxy_pass を設定した後に Nginx が 404 を返す問題のトラブルシューテ...
ネットワーク使用チュートリアル公式サイト docker-compose.yml リファレンスドキュメ...
1 実施原則これは、DOM 要素の dragstart/ondragover/ondrop イベント...
序文スワップは、ディスク上にある「仮想メモリ」の一部である特殊なファイル (またはパーティション) ...