DockerはMavenプラグインを使ってミラーリングを構築する方法です。
MavenのDockerプラグインでDockerのイメージを構築することができます。
クイック入門
pom.xmlにDocerプラグインを追加します。
Docerfileファイルを読みだします。
Docerfileファイルを読み込むとbaseImageとentrypointを指定する必要がありません。
多くのシーンでは、例えばmvn clean packageを実行する時に、プラグインが自動的にDocerミラーを構築する必要があります。これを実現するには、プラグインのgoalをあるphaseにバインドするだけでいいです。
maven命令形式は、mvn phase:goal、phaseが目標の構築ライフサイクル段階、goal配置の実行目標を結びつけたものです。
以下の設定を追加するだけでいいです。
Mavenプラグインを使って、Docer Hubにイメージを送ることもできます。
Mavenグローバルプロファイルsettings.xmlを修正し、Docer Hubユーザ情報を配置する。
クイック入門
pom.xmlにDocerプラグインを追加します。
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>linyuantongxue/docker-demo:0.0.1</imageName> // ,linyuantongxue ( DockerHub ),docker-demo ( DockerHub ),0.0.1 ( )
<baseImage>java</baseImage> // , FROM
<entryPoint>["java","-jar","app.jar"]</entryPoint> // ENTRYPOINT
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory> // ,${project.build.directory} target
<include>${project.build.finalName}.jar</include> // ,${project.build.finalName}.jar jar
</resource>
</resources>
</configuration>
</plugin>
以下のコマンドを実行してDockerイメージを構築します。
mvn clean package docker:build
docker magesを実行して、先ほど構築したミラーを確認します。Docerfileファイルを読みだします。
Docerfileファイルを読み込むとbaseImageとentrypointを指定する必要がありません。
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory> // Dockerfile
<imageName>linyuantongxue/docker-demo:0.0.1</imageName> // ,linyuantongxue ( DockerHub ),docker-demo ( DockerHub ),0.0.1 ( )
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory> // ,${project.build.directory} target
<include>${project.build.finalName}.jar</include> // ,${project.build.finalName}.jar jar
</resource>
</resources>
</configuration>
</plugin>
プラグインをあるphaseにバインドして実行します。多くのシーンでは、例えばmvn clean packageを実行する時に、プラグインが自動的にDocerミラーを構築する必要があります。これを実現するには、プラグインのgoalをあるphaseにバインドするだけでいいです。
maven命令形式は、mvn phase:goal、phaseが目標の構築ライフサイクル段階、goal配置の実行目標を結びつけたものです。
以下の設定を追加するだけでいいです。
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
// maven package build
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
// $$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$
<configuration>
<imageName>linyuantongxue/docker-demo:0.0.1</imageName>
<baseImage>java</baseImage>
<entryPoint>["java","-jar","app.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
鏡像を送るMavenプラグインを使って、Docer Hubにイメージを送ることもできます。
Mavenグローバルプロファイルsettings.xmlを修正し、Docer Hubユーザ情報を配置する。
<servers>
<server>
<id>docker-hub</id>
# DockerHub
<username>linyuantongxue</username>
<password>765371578Ly</password>
<configuration>
<email>[email protected]</email>
</configuration>
</server>
</servers>
pomファイルを修正
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>linyuantongxue/docker-demo:0.0.1</imageName>
<baseImage>java</baseImage>
<entryPoint>["java","-jar","app.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!-- setting.xml server.id , -->
<serverId>docker-hub</serverId>
</configuration>
</plugin>
以下のコマンドを実行して、pusshImageのマークを追加して、イメージを押して送ります。
mvn clean package docker:build -DpushImage
上記の例ではイメージネームとタグを指定することにより、イメージ要素を利用してイメージ名とタグをより柔軟に指定することもできます。このようにして、同一のイメージのために2つのタグを指定することができます。
<configuration>
<imageName>linyuantongxue/docker-demo</imageName>
<imageTags>
<imageTag>0.0.1</imageTag>
<imageTag>latest</imageTag>
</imageTags>
</configuration>
コマンド構築時に、dockerImageTagsパラメータでラベル名を指定することもできます。
mvn clean package:build -DpushImageTags -DdockerImageTags=latest -DdockerImageTags=another-tag
同じラベル名のイメージを繰り返し構築する必要があれば、forceTagsをtrueに設定できます。
<configuration>
// .......
<forceTags>true</forceTags>
</configuration>
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。