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 データ インポート

推薦する

MySQL の時間タイプとモードの詳細

目次1. MySQL の時刻型2. タイムゾーンを確認する3. 不正な時間値4. 厳密モード5. 事...

CSS グリッドレイアウトの完全ガイド

Grid は 2 次元のグリッド レイアウト システムです。これを使用すると、本質的にはハック メソ...

Node.js はクライアントリクエストデータ内の中国語文字化けの問題を解決します

Node.js はクライアントリクエストデータ内の中国語文字化けの問題を解決しますコード例: var...

HTML の値属性と名前属性の機能と使用法の紹介

1. ボタンで使用される値は、「OK」、「削除」など、ボタンに表示されるテキストを指します。 2. ...

MySQL の自動増分主キーに関する詳細な説明

目次特徴保存戦略自己増加の決定自動増分値の変更実行プロセス問題点自動増分ロックロック戦略バッチ挿入の...

VMware Workstation のインストール Linux システム

始める段階から初心者になるまで、Linux オペレーティング システムは不可欠です。最初のステップは...

mysql zipファイルのインストールチュートリアル

この記事では、参考までにMySQL zipファイルをインストールする具体的な方法を紹介します。具体的...

CSSオーバーフローメカニズムについての簡単な説明

CSS オーバーフローのメカニズムを詳細に学ぶ必要があるのはなぜですか?実際の開発プロセスでは、コン...

Linuxで静的ネットワーク接続を構成する方法

Linux システムのネットワーク接続を構成するのは難しい場合があります。幸いなことに、多くの新しい...

ミニプログラム録画機能の実装

序文ミニプログラムを開発する過程では、録音機能を実装し、録音を再生し、録音をサーバーにアップロードす...

Vueはフィルターを使用して日付をフォーマットします

この記事では、フィルターを使用して日付をフォーマットするVueの具体的なコードを参考までに紹介します...

Virtualbox で Ubuntu 16.04 の起動時に共有ディレクトリを自動的にマウントする最良の方法

仮想マシンを使用する人は通常、操作と使用を容易にするために仮想マシン用の共有ディレクトリを設定します...

MySQLデータベースのスケジュールバックアップを実装する方法

1. シェルスクリプトを作成する vim バックアップdb.sh 次のようにスクリプトを作成します。...

CSS でフローティングにより親要素の高さが崩れる問題を解決するいくつかの方法

1. ドキュメントフローとフローティング1. ドキュメントフローとは何ですか? HTML では、ドキ...

スライダー効果を実装するミニプログラム

この記事の例では、スライディングブロック効果を実現するための小さなプログラムの具体的なコードを参考ま...