小知识:dockerfile-maven-plugin使用指南小结

目录 pom配置 setting.xml配置 登录情况 需要登录 无需登录 maven多模块情况配置 jenkins jenkins服务器安装docker 修改jenkins项目配置

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

pom配置

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

setting.xml配置

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

在pluginGroups中增加一个com.spotify

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

登录情况

需要登录

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

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

无需登录

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

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

确认这里为空后,如果还报错,可以再执行一次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模块。

%小知识:dockerfile-maven-plugin使用指南小结-猿站网-插图

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

%小知识:dockerfile-maven-plugin使用指南小结-1猿站网-插图

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

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

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

原文链接:https://blog.csdn.net/acingdreamer/article/details/102959852

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:docker-maven-plugin 插件无法拉取对应jar包问题

2023-3-15 13:01:32

建站知识

小知识:idea使用docker插件实现一键自动化部署

2023-3-15 13:16:16

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索