docker-maven-plugin插件官网地址:https://github.com/spotify/docker-maven-plugin
1、准备一台Linux服务,并安装docker。参考:CentOS安装Docker
当前用于测试的docker版本为20.10.12
2、开启Docker的远程访问端口2375(注意将这个端口添加到防火墙白名单中)
修改文件/usr/lib/systemd/system/docker.service,在[Service]->>ExecStart位置添加配置-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
vi /usr/lib/systemd/system/docker.service -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
执行如下命令重启docker服务
systemctl daemon-reload #重新加载配置
systemctl restart docker #重启docker服务
3、在maven项目中添加插件
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.2</version> <configuration> <!-- Dockerfile定义 --> <baseImage>openjdk:8-jdk-alpine</baseImage> <maintainer>zhi.leaf@foxmail.com</maintainer> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> <workdir>/</workdir> <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint> <!-- 生成镜像,运行docker:build执行 --> <dockerHost>http://192.168.159.130:2375</dockerHost> <forceTags>true</forceTags> <imageName>zyz/${project.artifactId}</imageName> <!-- 设置标签,可以设置多个,如:latest或当前版本号${project.version} --> <imageTags> <imageTag>${project.version}</imageTag> </imageTags> </configuration> </plugin>
参数说明:
baseImage:基础镜像
forceTags:覆盖原来的镜像
dockerHost:docker远程服务主机
4、运行mvn docker:build构建docker镜像
如果出现提示,说明镜像构建成功
登录Linux服务,可以查看到刚才构建的镜像。
6、将构建命令绑定到maven的生命周期中,这样我们就可以在maven打包的时候就可以构建镜像了
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.2</version> <!-- 将Docker命令绑定到Maven的生命周期 --> <executions> <execution> <id>build-image</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> ... </configuration> </plugin>
分类:
Docker
, SpringCloud
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统