docker,spirngboot父子工程,只构建主模块,docker-maven-plugin构建插件,
实操:jib只构建关键模块并上传
前言
网上使用jib打包的代码和教程很多,但是都是很简单的单模块项目,配置简单,不能满足自己的需要
我想要的是:多模块下只需要构建主要的模块(如启动类)并上传
参考文章
- 官方有多模块打包demo
- 上午在issue中发现类似的提问:Add configuration to skip in Maven plugin
搜索<pluginManagement>可以定位 - 有博主提了一句,但是没给出配置Jib使用小结(Maven插件版) :小结6(自己悟性不行)
- b站up的视频下求助构建容器镜像的 N 种方式(2)- jib
- up主回复,再次提到了
pluginManagement
,我又翻了回去,终于解决,感谢@成富_Alex
我的项目结构(ruoyi):
通常情况下,SpirngBoot项目下是有多个模块的,而这些模块我们并不需要执行构建和镜像的push操作
详细配置
父pom设置
这里设置插件到
pluginManagement
,当子模块使用时才生效,避免全部模块构建
<build>
***
<pluginManagement>
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.2.1</version>
<configuration>
<from>
<!-- 源镜像-->
<image>ascdc/jdk8</image>
</from>
<to>
<!-- 名称格式: registry.cn-beijing.aliyuncs.com/命名空间/镜像名:版本 -->
<image>registry.cn-beijing.aliyuncs.com/***/${project.artifactId}:${project.version}</image>
<!-- 配置仓库认证-->
<auth>
<username>阿里云用户名</username>
<password>仓库密码(不是登录密码)</password>
</auth>
<tags>
<tag>
${project.version}
</tag>
</tags>
</to>
<container>
<!-- 配置主启动类 <mainClass>xyz.xxdl.RuoYiApplication</mainClass> -->
<ports>
<!-- 指定镜像端口 , 这里没用docfile的操作 -->
<port>8080</port>
</ports>
</container>
</configuration>
</plugin>
</plugins>
</pluginManagement>
***
</buidl>
ruoyi-admin模块pom设置
ruoyi-admin模块使用jib
<build>
<plugins>
***
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<executions>
<!-- 绑定生命周期:当执行package时执行goals中的jib命令-->
<execution>
<!-- <id>latest</id>-->
<!--<phase>package</phase>-->
<phase>package</phase>
<goals>
<!-- buildTar:只在本地生成tar压缩包 : build:生成并上传至你配置的docker仓库-->
<goal>build</goal>
<!-- <goal>buildTar</goal>-->
</goals>
</execution>
</executions>
</plugin>
***
</plugins>
</build>
打包
我们绑定了生命周期和buid上传操作,日志中就能看到构建和上传的信息了
刷新镜像页面,上传成功
验证构建镜像
本地的tar格式镜像导入
- 先用十八般武艺上传tar文件到服务器
- 使用
docker -load -i 文件名
加载镜像(日期有问题,后面说) - 使用命令
docker run -p 8080:8080 -d registry.cn-beijing.aliyuncs.com/命令空间/ruoyi-admin:2.4.0
,一定要指定版本,否则会去你的镜像仓库拉取,报没有认证的错误
上传后拉取镜像
因为仓库是私有的,所以要先登录后再拉取
- 我们按照
个人实例
->镜像仓库
->管理
页面提供的命令就可以拉取 - 直接创建镜像
docker run -p 8080:8080 -d registry.cn-beijing.aliyuncs.com/命令空间/ruoyi-admin:2.4.0
我们已经登录,所以在创建时直接拉取即可
验证访问
后续
这只是手动,后面我们搭配jenkins就能完成全自动了,期待期待