简介
可以使用docker-maven-plugin插件来自动构建Docker镜像,但是在官方申明中,Spotify官方已经不再推荐使用该插件,使用
dockerfile-maven-plugin
进行代替,官方github
注意事项
- 该插件依赖一台装有Docker daemon的Host完成镜像的构建
- 由于该插件需要访问Docker Host,因此要求Docker Host打开TCP管理端口,并允许访问
- 使用该插件的机器需要配置DOCKER_HOST选项,指向Docker Host对应端口
- 该插件构建和发布镜像依赖于镜像仓库,需要用户提供镜像仓库的登录信息,支持POM设置和Settings设置
docker相关配置
- 环境变量
环境变量应该存在
export DOCKER_HOST=tcp://xxxxx:2375
- 远程连接服务
docker的安装机应该保证开启远程连接服务 - 验证方式
curl xxxxx:2375/version
构建Docker镜像
-
pom.xml
<properties> <java.version>1.8</java.version> <docker.image.prefix>xxxx</docker.image.prefix> </properties> <build> <plugins> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.4.13</version> <executions> <execution> <id>default</id> <goals> <goal>build</goal> <goal>push</goal> </goals> </execution> </executions> <configuration> <repository>${docker.image.prefix}/dockertest</repository> <tag>${project.version}</tag> <buildArgs> <JAR_FILE>${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin> </plugins> </build>
- 编写
Dockerfile
,且Dockerfile
应该与pom.xml
在同级目录下FROM openjdk:latest ARG JAR_FILE ADD target/${JAR_FILE} app.jar CMD ["java", "-jar", "/app.jar"]
- 生成镜像
mvn dockerfile:build
或mvn package
即可生成镜像
推送Docker镜像
Docker镜像构建好后,我们还可以使用该插件将镜像推送到Docker仓库,如Docker Hub。
- 在settings.xml中配置server
<servers> <server> <id>docker.io</id> <username>xxxxxx</username> <password>xxxxxxxx</password> </server> </servers>
- 指定useMavenSettingsForAuth为true
<configuration> <repository>${docker.image.prefix}/dockertest</repository> <tag>${project.version}</tag> <useMavenSettingsForAuth>true</useMavenSettingsForAuth> <buildArgs> <JAR_FILE>${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration>
- 推送镜像
mvn deploy
或者
mvn dockerfile:push
注:
镜像的前缀必须跟docker.hub的用户名保持一致
网友评论