DockerはMavenプラグインを使ってミラーリングを構築する方法です。


MavenのDockerプラグインでDockerのイメージを構築することができます。
クイック入門
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>
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。