使用Maven打包构建Docker镜像并推送到仓库

这篇文章主要介绍了使用Maven打包构建Docker镜像并推送到仓库问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

对于开发完成的服务要发布至服务器Docker时,我刚学习了解Docker时构建镜像方式是将我的本地服务先通过maven打包称为jar包,然后再上传至我的服务器上,通过Dockerfile将其构建成为镜像。

后来才了解了直接通过maven命令直接打包构建的方式,以下是完成这一操作的步骤。

一,服务器Docker配置

修改daemon.json文件,开放端口2375

"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]

我的文件如下所示:

{       "insecure-registries":["10.xx.xx.xx:5000"],     "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"] } { "graph":"/Data/docker" }

二,本地项目maven配置

2.1 pom.xml

在项目的pom文件引入docker-maven-plugin插件

                                  com.spotify                 docker-maven-plugin                 1.2.2                                                                                    build                         install                                                      build                                                                                                                                                       http://10.xx.xx.xx:2375                                          10.xx.xx.xx:5000/${project.artifactId}:${docker.tag}                                          ${project.basedir}/src/main/docker                                                                                                /                             ${project.build.directory}                             ${project.build.finalName}.jar                                                                                                                                                       3                     2000                     10.xx.xx.xx:5000                                          ${docker.push}                                                   

重要配置解释:

  • dockerHost:docker所在服务器的ip和开放的端口
  • imageName:最终构建的镜像名称
  • dockerDirectory:本地dockerfile文件存放路径
  • targetPath:本地jar包生成位置
  • registryUrl:服务器docker的仓库地址
  • pushImage:是否在构建镜像后同时推送到Docker仓库

2.2 dockerfile

在本地项目的src/main下创建docker目录,在docker目录下创建dockerfile文件

FROM 10.xx.xx.xx:5000/java VOLUME /tmp ENV LANG C.UTF-8 COPY *.jar app.jar RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime  RUN echo "Asia/Shanghai" > /etc/timezone  ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-Djava.util.Arrays.useLegacyMergeSort=true", "-jar","app.jar"]

2.3 验证

此时,对该项目进行mvn install时,相当于会同时进行docker:build的动作,将本地项目jar包构建成镜像到服务器中

2.4 统一dockerfile

如果每个服务的镜像构建没有差异,可以将dockerfile从子项目中抽出来,就不需要在每一个项目模块中都创建相同的文件,直接放在项目根路径下就可以进行通用,同时修改pom配置

${project.parent.basedir}/docker

此时的dockerfile存储位置为项目父级目录的docker文件夹下。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持0133技术站。

以上就是使用Maven打包构建Docker镜像并推送到仓库的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 站长技巧