我试图弄清楚如何构建Docker镜像作为Maven构建过程的一部分。基本上,我想创建一个构建Docker镜像的Maven项目。我认为这是有道理的。
但是包装类型应该是什么样的?这显然不是jar
,war
或maven-plugin
。我尝试使用docker
,但这不存在。
我应该选择pom
还是有办法配置自定义包类型?
将pom
感觉错误给我,因为我们正在生成一个输出 - 一个Docker图像 - 在常规pom
类型中通常不是这种情况(父pom,bom,...)。
答案 0 :(得分:1)
docker build
或其他docker命令来生成最终图像。 Docker镜像是TAR文件,因此您可以使用Maven Assembly plugin生成所需的tar文件图像。
在这种情况下,您的项目"键入"将是" pom"以便项目本身生成一个POM文件,其中包含有关如何构建它的信息(例如名称和版本号)。 Assembly插件还将生成并附加相应的TAR文件,以便在使用mvn deploy
或其他引用该包的命令时,将包含相关的TAR文件。
如果您使用docker命令来构建图像,那么您可能需要编写自定义Maven扩展 - 这取决于您在运行mvn deploy
时想要发生的事情。这实际上取决于你的最终目标,但是如果你在Docker的范围内使用它,那么你可以用dockerfile-maven之类的插件做得更好,这将使你的构建能够驱动docker build
和/的docker工作流程。或docker push
。
答案 1 :(得分:1)
Spotify创建了一个dockerfile-maven-plugin,允许您使用maven构建和发布Docker镜像。在项目页面上有一个example和许多其他有用的信息。
答案 2 :(得分:0)
今天,这里有一个启用<packaging>docker</packaging>
的Maven docker插件:
https://github.com/fabric8io/docker-maven-plugin
文档在这里:
但是请注意指定<extensions>true</extensions>
!