的所有文件(連在一個Maven的部署「任務」)的-SNAPSHOT
部分將由時間戳版本在deploy:deploy
階段所取代。
1)創建泊塢圖像文件
擴展與docker-maven-plugin
工件POM(由Spotify的提供在https://github.com/spotify/docker-maven-plugin)。
[...]
您也可以構建目標結合到包裝階段,所以當你只運行MVN包裝容器將建成。
[...]
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.2.11</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
<configuration>
<imageName>${project.build.finalName}</imageName>
<baseImage>java</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<!-- copy the service's jar file from target into the root directory of the image -->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
的泊塢圖像名稱將在<imageName />
被定義和使用的工件的文件名(${project.build.finalName}
)。
imageName:建立的圖像將被賦予這個名字。有關build
目標
的更多信息:mvn com.spotify:docker-maven-plugin:help -Ddetail=true -Dgoal=build
或https://github.com/spotify/docker-maven-plugin
2)附加泊塢映像文件Maven的部署任務
連接 - 如果docker-maven-plugin
不爲你做 - 泊塢窗圖像文件與build-helper-maven-plugin
(http://www.mojohaus.org/build-helper-maven-plugin/usage.html)。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${project.build.finalName}</file>
<type>...</type>
<classifier>docker</classifier>
</artifact>
...
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
完成這些步驟後,工件文件本身和Docker鏡像工件被部署到具有相同版本字符串的Maven倉庫中。
在ONE POM中可以將工件的部署和Docker鏡像結合起來嗎?工件和Docker鏡像部署在相同的Maven任務中 - 兩個-SNAPSHOT別名被替換爲相同的時間戳版本字符串。如果它是您的工作解決方案,我會創建一個反映該問題的新答案。 – barthel
@barthel我做了一些關於在一個pom中發佈神器和碼頭圖像的研究,並且發現它很有趣。但他們(2 poms)順序改變時間戳。您是否能夠幫助我更好地瞭解如何在工件部署中添加docker build + deploy。我發現[這](https://github.com/spotify/docker-maven-plugin)是一個很好的參考,以防您需要,但我相信您會知道它已經:) –