jib-maven-plugin 使用

453 阅读1分钟

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…