微服务使用Google Jib构建Docker镜像
负责的某个项目之前都是通过原始方式编写Dockerfile来进行Docker镜像推送,然后在阿里云云平台的EDAS进行部署。此方法必定使用Docker工具进行打包推送,可能涉及到版权订阅等问题被Docker公司追责。故采取Google Jib来实现镜像的打包推送。
在本教程中,我将介绍如何使用 Google Jib 版本 3.4.4 构建 Java 微服务的 Docker 镜像。通过本教程,你将学会如何快速打包 Java 应用并生成轻量级的 Docker 镜像,从而加速微服务的开发和部署。
前提条件:Spring项目、Maven构建、已有Docker仓库
第一步:父pom文件添加Google Jib依赖
<!--依赖添加-->
<properties>
<jib-maven-plugin.version>3.4.4</jib-maven-plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>${jib-maven-plugin.version}</version>
</dependency>
</dependencies>
<!--依赖添加-->
<!--相关配置伪代码-->
<profiles>
<profile>
<id>dev</id>
<properties>
<package.environment>本地开发环境</package.environment>
<package.properties.basedir>src/main/resources/config</package.properties.basedir>
<profiles.active>dev</profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<package.environment>阿里云测试环境</package.environment>
<package.properties.basedir>src/main/resources/config</package.properties.basedir>
<profiles.active>test</profiles.active>
<dockerUserName>docker仓库用户名</dockerUserName>
<dockerPassword>docker仓库密码</dockerPassword>
<docker.repo>docker仓库地址</docker.repo>
<docker.path>docker仓库路径</docker.path>
c
<auth.image.name>auth docker仓库名字:v1.0</auth.image.name>
<gateway.image.name>gateway docker仓库名字:v1.0</gateway.image.name>
<analysis.image.name>analysis docker仓库名字:v1.0</analysis.image.name>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<package.environment>阿里云生产环境</package.environment>
<package.properties.basedir>src/main/resources/config</package.properties.basedir>
<profiles.active>prod</profiles.active>
<dockerUserName>docker仓库用户名</dockerUserName>
<dockerPassword>docker仓库密码</dockerPassword>
<docker.repo>docker仓库地址</docker.repo>
<docker.path>docker仓库路径</docker.path>
<!--以下是一些微服务的版本控制,举几个例子-->
<auth.image.name>auth docker仓库名字:v1.0</auth.image.name>
<gateway.image.name>gateway docker仓库名字:v1.0</gateway.image.name>
<analysis.image.name>analysis docker仓库名字:v1.0</analysis.image.name>
</properties>
</profile>
</profiles>
<build>
<pluginManagement>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>${jib-maven-plugin.version}</version>
<configuration>
<from>
<!--此地址固定获取jre-->
<image>docker jre</image>
<auth>
<username>docker账号</username>
<password>docker密码</password>
</auth>
</from>
<to>
<image>${docker.repo}/${docker.path}/${image.name}</image>
<auth>
<username>${dockerUserName}</username>
<password>${dockerPassword}</password>
</auth>
</to>
<extraDirectories>
<paths>
<path>
<from>${project.build.directory}</from>
<includes>${project.build.finalName}.jar</includes>
</path>
</paths>
</extraDirectories>
<container>
<environment>
<TZ>Asia/Shanghai</TZ>
</environment>
<entrypoint>nohup,java,-jar,/${project.build.finalName}.jar</entrypoint>
</container>
<allowInsecureRegistries>true</allowInsecureRegistries>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>第二步:子pom文件添加Google Jib相关配置
<!--以auth模块举例-->
<properties>
<image.name>
${auth.image.name}
</image.name>
</properties>
<plugins>
<!--在子pom中添加此插件以启用jib-->
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<!-- 若要跳过 Jib 构建,skip设为ture
<configuration>
<skip>true</skip>
</configuration>
-->
</plugin>
</plugins>第三步:Maven打包后使用Jib构建镜像并推送
1. Maven打包项目
2. 运行 Jib 构建命令
3. 查看构建进度
Jib 会自动构建镜像并推送到目标仓库(例如 Docker Hub)。构建完成后,将在控制台看到输出。
第四步:验证镜像
1. 拉取镜像
登录 Docker 仓库并拉取镜像:
docker pull your-dockerhub-username/my-microservice:latest2. 运行容器
运行容器并验证服务是否正常
3. 测试服务
打开浏览器或使用 curl 测试服务是否正常:
curl http://localhost:8080第五步:总结
通过本教程,我们学会了如何使用 Google Jib 版本 3.4.4 快速构建 Java 微服务的 Docker 镜像。Jib 提供了简单易用的插件化方式,使得开发者无需手动编写 Dockerfile 即可完成容器化操作。此外,Jib 还支持多种高级配置,帮助你更好地优化镜像大小和性能。
如果你遇到任何问题或需要进一步的帮助,请参考 Jib 官方文档 或社区支持。
祝你构建愉快!