jib-maven-plugin 使用
什么是jib
Jib无需Docker守护进程,也无需深入掌握Docker最佳实践,即可为您的Java应用程序构建优化的Docker镜像。
官方Github地址:github.com/GoogleConta…
下面我们讲解如何使用jib-maven-plugin
这个插件为我们的应用生成Docker镜像。
使用jib-maven-plugin插件
在您的 Maven Java 项目中,将该插件添加到您的pom.xml
:
<!-- 镜像打包插件-->
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.4.0</version>
<configuration>
<!-- 基础镜像和平台配置-->
<from>
<image>eclipse-temurin:21.0.1_12-jre-jammy</image>
<platforms>
<platform>
<architecture>amd64</architecture>
<os>linux</os>
</platform>
<platform>
<architecture>arm64</architecture>
<os>linux</os>
</platform>
</platforms>
</from>
<!-- 生成的目标镜像配置 -->
<to>
<image>registry.cn-shenzhen.aliyuncs.com/codelong/${project.artifactId}</image>
<tags>
<!--要推送到的其他标签-->
<tag>${project.version}</tag>
</tags>
<!-- 推送到仓库的凭证-->
<auth>
<username>${env.DOCKER_REPO_USERNAME}</username>
<password>${env.DOCKER_REPO_PASSWORD}</password>
</auth>
</to>
<!-- 忽略 HTTPS 证书错误-->
<!-- 并且可能会回退到 HTTP 作为最后的手段。强烈建议保留此参数设置false,因为 HTTP 通信未加密并且对网络上的其他人可见,并且不安全的 HTTPS 并不比纯 HTTP 好-->
<allowInsecureRegistries>true</allowInsecureRegistries>
<container>
<!--服务的启动类-->
<mainClass>com.codelong.echo.EchoDemoApplication</mainClass>
<!--使用该参数将镜像的创建时间与系统时间对齐-->
<creationTime>USE_CURRENT_TIMESTAMP</creationTime>
<!--jvm启动参数-->
<jvmFlags>
<jvmFlag>-Duser.timezone=GMT+08</jvmFlag>
<jvmFlag>-Dfile.encoding=UTF8</jvmFlag>
<jvmFlag>-Djava.security.egd=file:/dev/./urandom</jvmFlag>
<jvmFlag>--add-opens</jvmFlag>
<jvmFlag>java.base/java.lang.invoke=ALL-UNNAMED</jvmFlag>
</jvmFlags>
<ports>
<!--暴漏端口号-->
<port>8080</port>
</ports>
</container>
</configuration>
</plugin>
更多属性配置可以查看文档:文档地址
修改配置后,执行下面命令开始构建镜像,并将镜像推送到对应仓库。
mvn compile com.google.cloud.tools:jib-maven-plugin:build
绑定生命周期
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
...
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
将build绑定到package,然后,您可以通过运行以下命令来触发构建容器映像:
mvn package
更详细的配置和使用可以查看官方文档:github.com/GoogleConta…