使用 dockerfile-maven-plugin 构建 docker 镜像
简介
本文介绍了 com.spotify:dockerfile-maven-plugin 的简单使用示例。
最终达成的目标是把 docker 镜像构建集成在 maven 打包过程中,可以使用 maven 命令构建 docker 镜像。
功能相似的插件有三个:
- com.spotify:dockerfile-maven-plugin
本文使用的插件,已经停止更新,但功能依旧稳定。 com.spotify:docker-maven-plugin
本文所用插件的同胞兄弟,官方不推荐使用,已停止更新。- io.fabric8io:docker-maven-plugin
支持在 pom.xml 中配置 Dockerfile 的各项内容,也支持自定义 Dockerfile,支持操作容器,功能强大,仍在更新。
使用
以 spring-boot-web 项目为例:
- 创建一个 spring-boot-web 项目并确保项目正常;
- 依据项目需要在合适的位置定制一个 Dockerfile,这里把 Dockerfile 放在了
src/main/docker目录下:
1 | FROM openjdk:8-jdk-alpine |
- 在
project标签下添加插件配置:
1 | <build> |
- 构建镜像
镜像构建有两种方式:
绑定 maven 阶段自动构建:
以文中所示配置,执行
mvn install指令会自动构建 docker 镜像。显式运行构建指令
mvn package dockerfile:buld构建 docker 镜像。
可以在 maven 控制台日志中看到 docker 镜像已经构建成功。

- 跳过镜像构建
如果前面在 pom.xml 插件配置中绑定了在 maven 阶段自动构建 docker 镜像,但是某次打包过程中又不希望自动构建 docker 镜像,可以通过 dockerfile.skip 参数跳过 docker 镜像构建。
1 | mvn clean install -Ddockerfile.skip |
后记
- 个人不推荐在 pom.xml 中配置 Dockerfile 的各项内容,有种配置侵入的感觉,建议另写一个 Dockerfile 文件;
- 持续集成过程中完全可以使用 docker 相关指令构建镜像,maven 插件有点画蛇添足的意思;
- 本文相关代码可在 Seven-Steven/spring-examples 查看;
参考文档
- 官方使用文档
- 官方使用示例