docker-maven-plugin の詳細な使用方法

docker-maven-plugin の詳細な使用方法

Docker-Maven-プラグイン

マイクロサービスをデプロイする方法は 2 つあります。

  • 手動デプロイ: まず、ソース コードのパッケージ化に基づいて jar パッケージ (または war パッケージ) を生成し、Dockerfile ファイルを記述し、ベース イメージに基づいて新しいイメージを作成し、jar パッケージ (または war パッケージ) を仮想マシンにアップロードして、JDK コンテナーにコピーします。 (面倒すぎる)
  • Maven プラグインによる自動デプロイメント。 これは実際の企業開発でもよく使われる手法です。

Mavenプラグインの自動デプロイメント手順

冒頭に書いたように、この方法には抜け穴があり、ハッカーによってマイニングマシンイメージにリモートから簡単に挿入できます。使用時には注意してください。2375が開かれ、IP制限が課されていない場合は、マイニングに引き込まれます。 。 。 CA暗号化ポートの使用をお勧めします

1. ホストマシンのDocker設定を変更し、ポート2375を開いてリモートアクセスを許可します。

Maven コマンドをローカルで実行することは、ホスト マシンに対するリモート操作です。Docker のリモート操作はデフォルトで閉じられています。まずポート 2375 を開きます。

まず、ホストマシン上でコマンドを実行し、構成ファイルを変更します(centos 7)

vi /lib/systemd/system/docker.service

ExecStart= ‐H tcp://0.0.0.0:2375 ‐H unix:///var/run/docker.sockの後に構成を追加します。

実行開始=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \

unix://var/run/docker.sock : unix ソケット。ローカル クライアントはこれを使用して Docker デーモンに接続します。

tcp://0.0.0.0:2375 : TCP ソケット。これは、すべてのリモート クライアントがポート 2375 を介して Docker デーモンに接続できることを意味します。

なる


Centos7の場合は以下を変更します

実行開始=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

2. 設定を更新してサービスを再起動する

systemctl daemon-reload //Dockerデーモンスレッドをロード systemctl restart docker //Dockerを再起動

3. コンテナファイアウォールを構成する

ポート2375が開かれていても、外部からはアクセスできず、内部からのみアクセスできます。ファイアウォールを設定する必要があります。 Alibaba Cloudが設定されていない場合は、マイニングに引き込まれる可能性があるので注意してください-_-、これは私の学校のサーバーなので、アクセスするにはVPNが必要ですが、問題ありません

これは閉鎖されています。

systemctl stop firewalldコマンドを使用する(ファイアウォールをオフにする)
systemctl enable firewalld (ファイアウォールを無効にすると、起動時に起動しなくなります)

selinuxをオフにする

vi /etc/selinux/config で、SELINUX=enforcing を disabled に変更します。

ここに画像の説明を挿入

再起動が完了したら、ファイアウォールとSELinuxのステータスを確認します。

systemctl status firewalld (ファイアウォールの状態を確認する)
secon (selinux ステータスの確認) 

ここに画像の説明を挿入

Alibaba Cloudはセキュリティの呪いを設定することを推奨しています

この時点でdockerに接続して成功しました

4. pom.xmlに設定を追加する

Dockerfile次の構成で自動的に生成されます。

<ビルド>
        <finalName>テストDocker</finalName>
        <プラグイン>

            <プラグイン>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </プラグイン>

            <!--docker maven プラグイン-->
            <プラグイン>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <バージョン>1.1.0</バージョン>
                <!--構成セクション-->
                <構成>
                    <!--imageName ノードの内容をプライベート ウェアハウスのアドレスとポート、およびイメージ ID と TAG に変更し、プライベート サーバーに直接転送します -->
                    <!-- 最終的に生成されるイメージ名を設定します。Docker イメージでは、プロジェクト名: バージョンを使用します -->
                    <画像名>172.19.240.208:5000/${プロジェクト.アーティファクトId}:${プロジェクト.バージョン}}</画像名>
                    <!-- ベースイメージ、Dockerfile の from--> に相当
                    <baseImage>ascdc/jdk8</baseImage>
                    <!--エントリ ポイント、project.build.finalName は、プロジェクト タグ、testDocker の下のビルド タグの下のファイル名タグの内容です-->
                    <!-- コンテナを起動するのと同等に、java-jar/testDocker.jar が自動的に実行されます -->
                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
                    <!--docker プライベート ウェアハウスにプッシュするかどうか-->
                    <pushImage>真</pushImage>
                    <レジストリ URL>172.19.240.208:5000</レジストリ URL>

                    <リソース>
                        <リソース>
                            <ターゲットパス>/</ターゲットパス>
                            <ディレクトリ>${project.build.directory}</ディレクトリ>
                            <!--Docker にアップロードされるファイル。Dockerfile に testDocker.jar を追加するのと同等です /-->
                            <include>${project.build.finalName}.jar</include>
                        </リソース>
                    </リソース>
                    <dockerホスト>http://172.19.240.208:2375</dockerホスト>
                </構成>
            </プラグイン>
        </プラグイン>
    </ビルド>

プライベートリポジトリにプッシュするには3つのポイントがあり、コンテナが開始状態にあることが前提であることに注意してください。

<!-- 1. registryUrl ノードを追加します。内容はプライベート ウェアハウスのアドレスとポートです (ここではポート 5000 を設定しました) -->
<registryUrl>あなたのIP:5000</registryUrl>

<!-- 2. pushImage ノードを追加する-->
<pushImage>真</pushImage>

<!-- 3. imageName ノードの内容をプライベート ウェアハウスのアドレスとポートに変更し、イメージ ID と TAG を追加します。ウェアハウス内の名前はプロジェクト名: version になります -->
<imageName>yourip:5000/${project.artifactId}:${project.version} </imageName>

まず、mvn clean と mvn install を実行し、ローカル リポジトリに配置します。

[外部リンク画像の転送に失敗しました。ソースサイトにはアンチホットリンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-84l0HMwJ-1579593153706)(/Users/zhangye/Library/Application Support/typora-user-images/image-20200120214402887.jpg)]

次に、 mvn docker:buildコマンドを実行してイメージを作成します。アップロードする場合は、 -DpushImageパラメータを追加します。

[外部リンク画像の転送に失敗しました。ソースサイトにはアンチホットリンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-wdYBT027-1579593153707)(/Users/zhangye/Library/Application Support/typora-user-images/image-20200120214544482.jpg)]

実行中にエラーが発生しました

[エラー] プロジェクト demo で目標 com.spotify:docker-maven-plugin:1.1.0:build (default-cli) を実行できませんでした:
例外が発生しました: jdk1.8 のプル アクセスが拒否されました。リポジトリが存在しないか、'docker login' が必要になる可能性があります:
拒否: リソースへの要求されたアクセスが拒否されました -> [ヘルプ 1]

Baidu で確認したところ、ログインが必要だという人がたくさんいました。実際、ログインする必要はなく、リポジトリも存在しません。実際、私の docker には jdk1.8 イメージ ファイルがなく、自分でダウンロードする必要があります。docker search jdk8 でプルするか、tar パッケージを自分でアップロードしてから Dockerfile で作成することができます。私は直接1つを引いた

ここに画像の説明を挿入

docker images

ここに画像の説明を挿入

プロジェクト内のベースイメージ名を変更する

ここに画像の説明を挿入

ビルドとプッシュに成功しました

ここに画像の説明を挿入

[外部リンク画像の転送に失敗しました。ソースサイトにはアンチホットリンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-SAUhrnA3-1579593153710)(/Users/zhangye/Library/Application Support/typora-user-images/image-20200121154702289.jpg)]

ここに画像の説明を挿入

ミラーを見る

ここに画像の説明を挿入

倉庫を見る

ここに画像の説明を挿入

docker-maven-plugin の詳しい使い方については以上です。docker-maven-plugin の使い方についてさらに詳しく知りたい方は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

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

<<:  幅の比率に応じて高さを変えるCSSを実装するいくつかの方法

>>:  MySQL データベース シェル import_table データ インポート

推薦する

CentOS 上の Docker に Jupyter をインストールしてポートを開く方法

目次jupyterをインストールするDocker ポートマッピングjupyterをインストールするp...

div間のギャップの解決策

HTMLのdivブロックを使用していて、ブロックの中央をしっかりと接続できず、解決できない場合1. ...

CSS3 で QR コードスキャン効果を実装する例

オンラインプレビューhttps://jsrun.pro/AafKp/まず効果を見てみましょう:最初の...

Vueはチャットインターフェースを実装する

この記事の例では、チャットインターフェースの表示を実現するためのVueの具体的なコードを参考までに共...

MySQL に IP アドレスを効果的に保存する方法と、文字列 IP と数値を変換する方法の詳細な説明

High Performance MySQL バージョン 3 (セクション 4.1.7) を見ると、...

MySQLで更新可能なビューを作成する方法の詳細な説明

この記事では、例を使用して、MySQL で更新可能なビューを作成する方法について説明します。ご参考ま...

vue3.0プロジェクトアーキテクチャを段階的に構築する方法を教えます

目次序文: 1. vue-cliでプロジェクトを作成する2. ルーターをインストールする3. ディレ...

Mysql トランザクションで Update を実行するとテーブルがロックされますか?

2つのケース: 1. 索引あり 2. 索引なし前提条件:方法: コマンドラインを使用してシミュレー...

5分でDockerを使ってRedisのクラスターモードとセンチネルモードを構築する方法を教えます

目次1. 準備Redisイメージを取得する2. Redis Sentinel マスタースレーブモード...

Win7 で IIS7 Web および FTP サービスを完全にアンインストールする方法

昨日、パソコンにPHP開発環境をセットアップした後、Apacheサーバーを再起動するとエラーが続きま...

Dockerコンテナを使用する簡単な例

目次1. イメージをプルする2. イメージを実行する3. コンテナ内でアプリケーションをテストする4...

Apache ポートに基づいて仮想ホストを作成する例

apache: ポートに基づいて仮想ホストを作成する仮想ホスト(a、b、c)の作成を例に挙げます1)...

MySQL 5.7.17 winx64 のインストールと設定方法のグラフィックチュートリアル

Windows インストール mysql-5.7.17-winx64.zip メソッド レコード &...