这是我参与更文挑战的第17天,活动详情查看: 更文挑战
介绍
先对标题中的几个名词做下介绍:
- Spring Boot: 不认识我就别看了
- Maven: 目前比较通用的Java包管理器
- Docker: 理解为一种集成环境, 可直接运行项目, 不需要再手动安装各种依赖
- Harbor: 私有的DockerHub
本文重在记录并讲解如何使用jib-maven-plugin将Spring Boot项目进行打包发布
默认您已熟知Spring Boot和Maven相关配置并了解Docker相关概念
增加发布配置
我们的项目会发布在私有仓库中, 所以先修改pom文件, 增加相关配置, pom.xml
<properties>
<release.url>http://Houtaroy/repository/releases/</release.url>
<snapshot.url>http://Houtaroy/repository/snapshot/</snapshot.url>
</properties>
<distributionManagement>
<repository>
<id>releases</id>
<name>Release Repository</name>
<url>${release.url}</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshot Repository</name>
<url>${snapshot.url}</url>
</snapshotRepository>
</distributionManagement>
复制代码
使用jib-maven-plugin
我们最终目的是将项目打包为Docker镜像, 在完成发布配置后, 需要引入jib-maven-plugin打包插件
同样修改pom.xml:
<properties>
<maven-jib-plugin.version>2.5.2</maven-jib-plugin.version>
<docker.from.image>repository.harbor.com/library/java8-cn:latest@sha256:xxxx</docker.from.image>
<docker.repository>repository.harbor.com/test</docker.repository>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>${maven-jib-plugin.version}</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<from>
<image>${docker.from.image}</image>
</from>
<to>
<image>${docker.repository}/${project.artifactId}:${project.version}</image>
</to>
<container>
<creationTime>USE_CURRENT_TIMESTAMP</creationTime>
<jvmFlags>
<jvmFlag>-Duser.timezone=GMT+8</jvmFlag>
</jvmFlags>
<volumes>
<volume>/app/config</volume>
<volume>/app/data</volume>
</volumes>
<workingDirectory>/app</workingDirectory>
</container>
<extraDirectories>
<paths>
<path>${project.basedir}/target/extra-directory/</path>
</paths>
</extraDirectories>
<allowInsecureRegistries>true</allowInsecureRegistries>
<containerizingMode>packaged</containerizingMode>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
复制代码
讲解几个需要注意的配置参数:
<from>: 基础镜像, 项目基于Java8环境, 所以使用java8-cn:latest@sha256:xxxx
这里需要注意的是, 我们需要指定image的digest, 可以在Harbor中查看:
<to>: 打包路径, 会将项目镜像发布到此路径
container: 容器相关配置, 比如我挂载了/app目录
增加Maven认证
完成上述配置后, 我们只需要在push镜像时增加Maven私服和Harbor的用户认证即可
我在Idea中替换了默认Maven为自己本机的Maven, 所以需要修改%MavenHome%/conf/setting.xml:
<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>123456</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>123456</password>
</server>
<server>
<id>repository.harbor.com</id>
<username>admin</username>
<password>123456</password>
</server>
</servers>
复制代码
到此为止, 只需要执行Maven的deploy命令, 就可以把Spring Boot打包成Docker镜像发布到Harbor上啦
总结
最后梳理一遍流程:
- 拥有Maven仓库和Docker仓库, 并且有项目运行的基础镜像
- 修改pom文件增加发布配置
- 修改pom文件使用jib-maven-plugin插件进行打包
- 修改Maven的setting.xml, 增加仓库用户认证
- 执行Maven的deploy命令
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END