この記事では、Mavenプラグインを使用してDocker画像を作成する方法を紹介します。私はあなたとそれを共有します。詳細は次のとおりです。
道具
良い仕事をしたい場合は、まずツールを研ぎ澄まさなければなりません。調査後、次のDocker Mavenプラグインが私の視野に入りました。
| プラグイン名 | 公式住所 |
|---|---|
| Docker-Maven-Plugin | https://github.com/spotify/docker-maven-plugin |
| Docker-Maven-Plugin | https://github.com/fabric8io/docker-maven-plugin |
| Docker-Maven-Plugin | https://github.com/bibryam/docker-maven-plugin |
著者は、3次元から最初のものを選択しました:星、文書の使いやすさ、頻度を更新します。
プラグインを使用してDocker画像を作成します
簡単な使用
以前のプロジェクトを取り上げましょう:Microservice-Discovery-eurekaの例として:
pom.xmlに次の段落を追加します
<build> <プラグイン> <! - Docker's Maven Plugin、公式ウェブサイト:https://github.com/spotify/docker-maven-plugin-> <plugin> <groupid> com.spotify> <artifactid> docker-maven-plugin </artifactid>通常の[a-z0-9-_。]、それ以外の場合はビルドが成功しません - > <! - 参照:https://github.com/spotify/docker-maven-plugin無効なリポジトリ名... <EntryPoint> ["java"、 "-jar"、 "/$ {project.build.finalname} .jar"] </entrypoint> <resources> <resupter>/<targetpath>/</targetpath> <directory> $ {project.build.directory} </directory> <inction> $ {cuftimen </plugin> </plugins> </build>コマンドを実行します。
MVNクリーンパッケージDocker:ビルド
コンソールには次のようなものがあることがわかります。
[情報]画像の構築マイクロサービス装飾 - ユーレカステップ1:ライブラリ/javadigestからのJavapullingから:sha256:581a4ad8fdfdf194d597cb5106c1f91463024f4fb3a49a2d9f025165eb675ftatused fiveded fiveded fir ---> EA40C858F006STEP 2:/microservice-discovery-eureka-0.1-snapshot.jar // ---> d1c174083bcaremoving中間コンテナ91913d847c20ステップ3 /microservice-discovery-eureka-0.0.1-snapshot.jar ---> running in 0f2aeccdfd46 ---> d57b027ca65aremoving中間容器0f2aeccdfd46successuctive burited d57b027ca65a ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
おめでとうございます、建設は成功しました。
Docker画像を実行し、画像が正常に構築されていることがわかります。
リポジトリタグ画像ID作成SizemicRoservice-Discovery-Eureka最新D57B027CA65A約1分前681.5 MB
鏡を開始します
Docker run -P 8761:8761 Microservice-Discovery-Eureka
Docker画像は非常に迅速に開始されることがわかります。
アクセステスト
http:// dockerホストIP:8761にアクセスして、通常のユーレカインターフェイスを確認してください。
dockerfileでビルドします
上記の方法が最も簡単な方法です。多くの場合、Dockerfileの助けを借りて作成する必要があります。まず、/microservice-discovery-eureka/src/main/dockerディレクトリにファイルdockerfileを作成します。
Javaから:8volume/tmpadd microservice-discovery-eureka-0.1-snapshot.jar app.jarrun bash -c 'touch/app.jar'expose 9000entrypoint ["java"、 "-djava.security.egd = file:/dev/dev/dev/dev/dev" "
pom.xmlを変更します
<build> <プラグイン> <! - Docker's Maven Plugin、公式ウェブサイト:https://github.com/spotify/docker-maven-plugin-> <plugin> <groupid> com.spotify> <artifactid> docker-maven-plugin </artifactid>通常の[a-z0-9-_。]、それ以外の場合はビルドが成功しません - > <! - 参照:https://github.com/spotify/docker-maven-plugin無効なリポジトリ名... dockerfileはあります - > <dockerdirectory> $ {project.basedir}/src/main/docker </dockerdirectory> <socesson> <resource>/<targetpath>/</targetpath> <directory> $ {project.build.directory} </directory> <inction> $ {project.build.finamame> </plugin> </plugins> </build>他の手順は同じです。このようにして、DockerFileを使用してDocker画像を作成できます。
dockerhubのドッカー画像を押します
最初にMavenのグローバル構成ファイル設定を変更し、次の段落を追加します
<サーバー> <server> <id> docker-hub </id> <username> your dockerhub username </username> <password> your dockerhub password> </password> <configuration> <email> your dockerhubメールボックス</email> </configuration> </server> </servers>
DockerHubでレポを作成します
プロジェクトPOM.XMLは次のように変更されています。イメージネームのパスはレポのパスと一致するはずであることに注意してください
<build> <プラグイン> <! - Docker's Maven Plugin、公式ウェブサイト:https://github.com/spotify/docker-maven-plugin-> <plugin> <groupid> com.spotify> <artifactid> docker-maven-plugin </artifactid>通常の[a-z0-9-_。]、それ以外の場合はビルドが成功しません - > <! - 参照:https://github.com/spotify/docker-maven-plugin無効なリポジトリ名... <mageName> eacdy/test </imageName> <! - dockerfileの位置にあるパスを指定します - > <dockerdirectory> $ {project.badedir}/src/dockerdirectory> <resources> <resources> <resurce> <targetpath> <directory> $ {project.build.directory> </directory> <cludent> $ {project.build.finalname} .jar </inctrual> </resource> </resources> <! - DockerhubへのDockerプッシュには、次の2つの行が使用されます。 - > <serverId> docker-hub </serverId> <registryurl> https://index.docker.io/v1/ </registryurl> </configuration> </plugin> </plugins> </build>コマンドを実行します。
MVNクリーンパッケージDocker:Build -DPushimage
構造が成功した後、Docker画像がDockerHubに押し込まれたことがわかります。
画像をプライベートリポジトリに押し込みます
多くのシナリオでは、ミラーをプライベートリポジトリに押し込む必要があります。包括性を説明するために、プライベートリポジトリは、ログイン認証を構成するプライベートリポジトリを使用します。
DockerHubにプッシュするのと同じように、まずMavenのグローバル構成ファイル設定を変更し、次の段落を追加する必要があります
<サーバー> <server> <id> docker-registry </id> <username> your dockerhub username </username> <password> your dockerhub password> </password> <configuration> <email> your dockerhub mailbox </email> </configuration> </server> </servers>
プロジェクトのpom.xmlを次のように変更してください。
<Plugin> <groupId> com.spotify </groupid> <artifactid> docker-maven-plugin </artifactid> <version> 0.4.12 </version> <configuration> <! - パスは次のとおりです。 <dockerdirectory> $ {project.basedir}/src/main/docker </dockerdirectory> <sostase> <sostase> <resources> <target> <target> <directory> $ {project.build.directory}構成ファイルsettings.xml - > <serverId> docker-registry </serverId> </configuration> </plugin>埋め込む:
MVNクリーンパッケージDocker:Build -DPushimage
しばらく待つと成功します。
プライベートサーバーから画像をダウンロードする場合は、次のことを実行します。
dockerログインreg.itmuch.com#次にアカウント番号とパスワードを入力しますdocker pull reg.itmuch.com/test-pull-registry
プラグインをバインドして、フェーズで実行します
多くのシナリオでは、このようなニーズがあります。たとえば、MVN Cleanパッケージを実行するときに、Docker画像を自動的に作成します。大丈夫ですか?答えはイエスです。プラグインの目標を特定のフェーズにバインドするだけです。
いわゆるフェーズと目標は、次のように理解できます。MVNコマンド形式は次のとおりです。MVNフェーズ:目標、MVNパッケージDocker:ビルド、その後、パッケージとDockerは両方のフェーズであり、ビルドはゴールです。
これが例です:
最初にプロパティを構成します:
<properties> <docker.image.prefix> reg.itmuch.com </docker.image.prefix> </properties>
プラグイン構成:
<build> <Plugins> <Plugin> <GroupId> com.spotify </groupId> <artifactid> docker-maven-plugin </artifactid> <executions> <execution> <id> build-image </id> <phase>パッケージ</フェーズ> <ゴール> <ゴール>ビルド</ゴール> </execututution> </executution> </executution> </executuration> </executution <イメージネーム> $ {docker.image.prefix}/$ {project.artifactid} </imagename> <baseimage> java </baseimage> <entrypoint> ["java"、 "-jar"、 "/$ {project.build.finalname} <Directory> $ {project.build.directory} </directory> <conding> $ {project.build.finalname} .jar </incribsion> </resource> </resources> </configuration> </plugin> </plugins> </build>上記のように、追加する必要があります:
<Executions> <Execution> <id> build-image </id> <phase>パッケージ</phase> <goal> build> build </goal> </goal> </execution> </executions>
やるだけ。この例は、パッケージフェーズにバインドされたDockerのビルドターゲットを参照しています。言い換えれば、ユーザーはMVNパッケージを実行し、MVN Docker:Buildを自動的に実行するだけです。
一般的な例外
2375に接続できません(通常はWin7に)
コードコピーは次のとおりです。
Connect to LocalHost:2375 [localhost/127.0.0.1、localhost/0:0:0:0:0:0:0:0:1]失敗:接続拒否:connect-> [ヘルプ1]
解決策:
Docker-Machine envを入力します
$ env:docker_tls_verify = "1" $ env:docker_host = "tcp://192.168.99.100:2376" $ env:docker_cert_path = "c:/users/administrator/.docker/machine/machines/default
プラグインの構成を追加します
<! - ローカルホストへの接続の問題を解決する方法の1つ:2375、docker-machine env-> <dockerhost> https://192.168.99.100:2376 <//192.168.99.100:2376
変更後、プラグイン構成は次のとおりです。
<Plugin> <groupId> com.spotify </groupid> <artifactid> docker-maven-plugin </artifactid> <version> 0.4.12 </version> <configuration> <imagename> eacdy/test </imagename> <dockerdirectory> $ {project.basedir}/src/docker < LocalHost:2375に接続する問題:Docker-Machine env-> <dockerhost> https://192.168.99.100:2376 </dockerhost> <dockertpath> <TargetPath>/</TargetPath> <Directory> $ {project.build.directory} </directory> <condunt> $ {project.build.finalname} .jar </incord> </resource> </resource> <! - Dockerhubへのドッカープッシュのために次の2行を使用します。 - > <serverId> docker-hub </serverId> <registryurl> https://index.docker.io/v1/ </registryurl> </configuration> </plugin>参照:https://github.com/spotify/docker-maven-plugin/issues/116
ヒント
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。