dockerfile-maven-plugin 使用ガイドの概要

dockerfile-maven-plugin 使用ガイドの概要

最近、コンテナプラットフォームにアプリケーションをデプロイする際に、パッケージング時に 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>-->
                        <!--<目標>-->
                            <!--&lt;!&ndash;docker パッケージングを使用しない場合は、このゴールをコメントアウトしてください&ndash;&gt;-->
                            <!--<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 に配置すると、パッケージ化は失敗します。

以下の状況:

  • -アプリ
  • -一般
  • -ファイル
  • -郵便
  • -応用
  • ​ -pom.xml

この場合は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 をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • docker-maven-pluginプラグインは対応するjarパッケージを取得できません
  • docker-maven-plugin の詳細な使用方法
  • Maven プラグイン docker-maven-plugin の使用
  • dockerfile-maven-plugin ミニマリスト チュートリアル (推奨)
  • docker-maven-pluginを使用してデプロイメントを自動化する方法を説明します

<<:  長いデータを HTML で表示するときに処理する方法

>>:  JavaScript strictモードの概要 strictを使用する

推薦する

MySQL統計データテーブルの設計方法

目次リアルタイム更新は必要ですか?マテリアライズド ビュー ツール (Flexviews)カウントテ...

Apache FlinkCEP でタイムアウトステータス監視を実装するための詳細な手順

CEP - 複合イベント処理。ご注文後、一定期間内にお支払いの確認が取れませんでした。タクシーの配...

Vueのライフサイクルについて詳しく説明します

目次序文1. Vue2 のライフサイクルインスタンスのライフサイクルその他のライフサイクルフック2....

html+vue+element-ui のスムーズさを 1 分で体験

テクノロジーファンHTMLウェブページ、知っておくべきYouyou が開発した vue フロントエン...

MySQL 最適化ソリューション リファレンス

最適化によって発生する可能性のある問題最適化は必ずしも単純な環境で実行されるわけではなく、実稼働環境...

CSS3 のカラー値 RGBA とグラデーションカラーの使用方法の紹介

CSS3以前は、グラデーション画像は背景画像としてのみ使用できました。 CSS3 のグラデーション構...

SQL ファジー クエリ レポート: ORA-00909: パラメータの数が無効です。解決策

あいまいクエリにOracleデータベースを使用する場合、コンソール エラーは次の図に表示されます。理...

Vue は検証コードのカウントダウンボタンを実装します

この記事では、検証コードカウントダウンボタンを実装するためのVueの具体的なコードを例として紹介しま...

ファイルのアップロードの進行状況を示す React の例

目次React アップロードファイル表示の進行状況デモフロントエンドにReactアプリケーションを素...

CSS でフロートをクリアするための完全ガイド (要約)

1. 親divは疑似クラスafterとzoomを定義します <スタイル タイプ="...

JSでよく使われるデータ処理方法

目次DOM処理配列方法要約するDOM処理DOM はドキュメントの構造化された表現を提供し、スクリプト...

proxy_pass を設定した後に Nginx が 404 を返す問題を解決する

目次1. proxy_pass を設定した後に Nginx が 404 を返す問題のトラブルシューテ...

docker-compose ネットワーク設定についての簡単な説明

ネットワーク使用チュートリアル公式サイト docker-compose.yml リファレンスドキュメ...

JavaScript を使用して div の位置をドラッグして入れ替える例

1 実施原則これは、DOM 要素の dragstart/ondragover/ondrop イベント...

CentOS7 システムでスワップを増やす方法の例

序文スワップは、ディスク上にある「仮想メモリ」の一部である特殊なファイル (またはパーティション) ...