google jib构建java容器

176 阅读2分钟

jib是什么?

Jib 在不使用 Dockerfile 或不安装 Docker 的情况下构建容器。您可以在用于 Maven 或 Gradle 的 Jib 插件中使用 Jib,也可以使用 Jib Java 库

jib可以做什么?

Jib 处理将应用打包到容器映像中的所有步骤。您无需了解创建 Dockerfile 的最佳做法或安装 Docker。

Docker 构建流程:

image.png Jib 构建流程:

image.png Jib 将您的应用整理成不同的层、依赖项、资源和类;并且利用 Docker 映像层缓存仅通过重建更改来保持构建速度。Jib 的层组织和小型基础映像可使整体映像尺寸变小,从而提升性能和可携性。

在maven中使用jib构建

将插件添加到您的pom.xml中:

<plugin>
  <groupId>com.google.cloud.tools</groupId>
  <artifactId>jib-maven-plugin</artifactId>
  <version>2.8.0</version>
  <configuration>
    <to>
      <image>HUB/IMAGE</image>
    </to>
  </configuration>
</plugin>

替换

  • 将 HUB 替换为 公司hub地址。
  • 将 IMAGE 替换为您的映像名称。

如果您不想修改 pom.xml,可以使用以下命令:

mvn compile com.google.cloud.tools:jib-maven-plugin:2.8.0:build -Dimage=HUB/IMAGE

构建映像并将其推送到hub

mvn compile jib:build

其他自定义内容

添加环境变量 您可以将环境变量添加到构建,类似于 Dockerfile 中的 ENV 指令,如下所示:

<plugin>
 <groupId>com.google.cloud.tools</groupId>
 <artifactId>jib-maven-plugin</artifactId>
 <version>2.8.0</version>
 <configuration>
   <to>
     <image>HUB/IMAGE</image>
   </to>
   <container>
     <environment>
       <ENV_VAR>VALUE</ENV_VAR>
     </environment>
   </container>
 </configuration>
</plugin>

替换

  • 将 PROJECT 替换为 Google Cloud 项目 ID。
  • 将 IMAGE 替换为您的映像名称。
  • 将 ENV_VAR 替换为 NAME
  • 将 VALUE 替换为所需的值。

更改基础映像

基础映像与 Dockerfile 中的 FROM 指令相同。您可以通过更改字段 from.image 来更新基础映像。

如果要包含用于调试的 shell,请将基础映像设置为 alpine:3 或 openjdk:VERSION(如果需要 Java)。

  <plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <version>2.8.0</version>
    <configuration>
      <from>
        <image>gcr.io/PROJECT/BASE_IMAGE</image>
      </from>
      <to>
        <image>gcr.io/PROJECT/IMAGE_NAME</image>
      </to>
    </configuration>
  </plugin>

自定义其他 Java 方面

Jib 支持运行应用时可能需要的 Java 运行时配置。如需更多自定义信息,请参阅扩展用途