经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 软件/图像 » Maven » 查看文章
dockerfile-maven-plugin使用指南小结
来源:jb51  时间:2021/9/28 14:19:28  对本文有异议

最近在将应用部署到容器平台,需要在打包时生成docker镜像,在网上首先搜到了docker-maven-plugin这个插件,但使用起来很麻烦,在maven和dockfile都要做很多额外的配置。后来在官方Github看到作者推荐使用dockerfile-maven-plugin这个新的插件,于是替换成这个,但这个插件在网上的相关资料较少。在此记录一哈

pom配置

  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-deploy-plugin</artifactId>
  4. <configuration>
  5. <skip>true</skip>
  6. </configuration>
  7. </plugin>
  8.  
  9. <!-- Dockerfile maven plugin -->
  10. <plugin>
  11. <groupId>com.spotify</groupId>
  12. <artifactId>dockerfile-maven-plugin</artifactId>
  13. <version>1.4.10</version>
  14. <executions>
  15. <!--<execution>-->
  16. <!--<id>default</id>-->
  17. <!--<goals>-->
  18. <!--&lt;!&ndash;如果package时不想用docker打包,就注释掉这个goal&ndash;&gt;-->
  19. <!--<goal>build</goal>-->
  20. <!--<goal>push</goal>-->
  21. <!--</goals>-->
  22. <!--</execution>-->
  23. </executions>
  24. <configuration>
  25. <repository>docker-reg.****.com/feedback/${artifactId}-${profiles.active}</repository>
  26. <tag>${project.version}</tag>
  27. <buildArgs>
  28. <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
  29. </buildArgs>
  30. </configuration>
  31. </plugin>

setting.xml配置

这个文件在maven目录下,可以 cd $M2_HOME/conf 进入。

在pluginGroups中增加一个com.spotify

  1. <pluginGroups>
  2. <pluginGroup>com.spotify</pluginGroup>
  3. </pluginGroups>

登录情况

需要登录

关于如何验证登录,坑比较多。如果你在habor设置你的仓库为私有,那必须要登录,按照官方配置就可以,如下。

  1. <plugin>
  2. <groupId>com.spotify</groupId>
  3. <artifactId>dockerfile-maven-plugin</artifactId>
  4. <version>${version}</version>
  5. <configuration>
  6. <username>repoUserName</username>
  7. <password>repoPassword</password>
  8. <repository>${docker.image.prefix}/${project.artifactId}</repository>
  9. <buildArgs>
  10. <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
  11. </buildArgs>
  12. </configuration>
  13. </plugin>

无需登录

但因为我配置了在k8s自动从habor获取镜像,所以设置了公开,这种情况下无需登录,但有时也会执行失败,此时你需要删掉~/.docker/config.json中的这个网站的配置。

  1. cat ~/.docker/config.json
  2.  
  3. {
  4. "auths": {
  5. "192.168.87.110:5000": {
  6. "auth": "YWRtaW46JKDtaW4xMjM="
  7. }(删掉此处)
  8. },
  9. "HttpHeaders": {
  10. "User-Agent": "Docker-Client/18.09.0 (linux)"
  11. }
  12. }

确认这里为空后,如果还报错,可以再执行一次docker login … ,这样就成功了

maven多模块情况配置

在多模块的情况下,打包插件一定要放置在Application子模块中,如果放在root pom中会导致打包不成功。

如下情况:

  • -app
  • ​ -common
  • ​ -file
  • ​ -mail
  • ​ -application
  • ​ -pom.xml

这种情况,我们可以分两个步骤

第一步先打包全部模块,在根目录下

  1. mvn clean package -P test

第二步在要打包镜像的子模块中执行deploy命令

  1. mvn dockerfile:build dockerfile:push

这样,就能成功将子模块打包为镜像并push。

jenkins

在本地测试完之后,要将这个流程弄到jenkins,做一些配置。

jenkins服务器安装docker

此处不再赘述,maven的setting.xml等配置和本地一样。

修改jenkins项目配置

此时,由于项目需要打包两次(一次在根目录打包,第二次在子目录打包为镜像),所以需要执行两次mvn命令,和之前不一样,所以将第一次的执行还是使用jenkins的Build模块。

在这里插入图片描述

第二次的执行放置在post steps中通过命令在执行

Mkb3FJ.md.png

  1. cd 子模块目录
  2. mvn clean package -P $env dockerfile:build dockerfile:push

这样,就可以完成打包并制作镜像的步骤了

到此这篇关于dockerfile-maven-plugin使用指南小结的文章就介绍到这了,更多相关dockerfile-maven-plugin使用 内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号