Dockerfile Maven 插件使用
这是一个将Docker与Maven无缝集成的Maven插件,可以方便地使用Maven打包Docker image(注意:原来的项目docker-maven-plugin 已经不建议使用)。
设计目标:
- 不要试图做任何事情。 这个插件使用Dockerfiles构建Docker项目的而且是强制性的。
- 将Docker构建过程集成到Maven构建过程中。如果绑定默认phases,那么当你键入mvn package时,你会得到一个Docker镜像。 当你键入mvn deploy时,你的图像被push。
- 让goals记住你在做什么。 你可以输入
mvn dockerfile:build
及后面的mvn dockerfile:build
和mvn dockerfile:push
都没有问题。这也消除了之前像mvn dockerfile:build -DalsoPush
这样的命令;相反,你可以只使用mvn dockerfile:build dockerfile:push
。 - 与Maven build reactor集成。你可以在一个项目中依赖另一个项目所构建的Docker image,Maven将按照正确的顺序构建项目。当你想要运行涉及多个服务的集成测试时,这非常有用。
该项目遵守 Open Code of Conduct.。 参与贡献代码,你需要遵守此代码规则。
Set-up
该插件需要Java 7或更高版本以及Apache Maven 3或更高版本。要运行集成测试或在开发中使用该插件,需要有一个能正常工作的Docker。
例子
<!-- docker image -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.4</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
<configuration>
<useMavenSettingsForAuth>true</useMavenSettingsForAuth>
<username>xxxxx</username>
<password>xxxx</password>
<repository>${docker.image.registryUrl}/${project.name}</repository>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>target/app-0.0.1-SNAPSHOT.jar</JAR_FILE>
</buildArgs>
<pullNewerImage>true</pullNewerImage>
</configuration>
<!-- docker-maven-plugin -->
</plugin>
说明:
使用该插件需要进行一下配置项设置:DOCKER_HOST环境变量设置(docker 运行所在的服务器地址)
useMavenSettingsForAuth 是使用maven 配置进行权限验证(主要用来发布到镜像仓库,例如阿里云)
<servers>
<server> <id>docker.image.registryUrl</id> <username>admin</username> <password>adminpassword</password> </server> </servers>
也可以直接配置: <username>xxxxx</username> <password>xxxx</password> 如果docker 服务器进行了ssl 配置 那么需要添加证书到客户端主机上,例如我的客户端是在windows 服务器 证书放置会在C:\Users\admin\.docker,如果是jenkins 服务器是在jenkins C:\Windows\System32\config\systemprofile\.docker
使用过程中会有遇到一些问题,这时候建议在命令行上运行命令同时-X 观看日志,这样更好定位问题;关于docker 服务器证书创建后续补上;
以下是我的docker 服务器是使用阿里云ecs
https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=nbog3w5j