Jib 在不使用 Dockerfile 或不安装 Docker 的情况下构建容器。您可以在用于 Maven 或 Gradle 的 Jib 插件中使用 Jib,也可以使用 Jib Java 库。
Jib 可以做什么?
Jib 处理将应用打包到容器映像中的所有步骤。您无需了解创建 Dockerfile 的最佳做法或安装 Docker。
Docker 构建流程:
Jib 构建流程:
Jib 将您的应用整理成不同的层、依赖项、资源和类;并且利用 Docker 映像层缓存仅通过重建更改来保持构建速度。Jib 的层组织和小型基础映像可使整体映像尺寸变小,从而提升性能和可携性。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Container Registry API.
- 如果您没有安装 Java,请下载 Java,然后进行安装和配置。
- 安装 Maven 3.5 或更新版本。
- 安装并初始化 Google Cloud CLI。
- 如需向 Container Registry 进行身份验证,请使用 Google Cloud CLI 作为 Docker 凭据帮助程序:
或者,请参考 Jib 配置文档了解其他身份验证方法。gcloud auth configure-docker
使用 Jib 进行构建
选择一个现有项目并导航到源文件夹,或使用以下命令克隆该示例:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git cd java-docs-samples/run/helloworld
将插件添加到您的
pom.xml
中:<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> <version>2.8.0</version> <configuration> <to> <image>gcr.io/PROJECT/IMAGE</image> </to> </configuration> </plugin>
替换
- 将 PROJECT 替换为 Google Cloud 项目 ID。
- 将 IMAGE 替换为您的映像名称。
如果您不想修改
pom.xml
,可以使用以下命令:mvn compile com.google.cloud.tools:jib-maven-plugin:2.8.0:build \ -Dimage=gcr.io/PROJECT/IMAGE
构建映像并将其推送到 Container Registry:
mvn compile jib:build
您可以在 Container Registry 中查看容器来验证是否成功。
(可选)如果您安装了 Docker,则可以构建本地 Docker 安装,以便将映像作为任何其他本地容器进行检查或运行:
mvn compile jib:dockerBuild
其他自定义内容
您可以使用与 Dockerfiles 类似的方式自定义 Jib 版本,例如添加环境变量和选择基础映像。
添加环境变量
您可以将环境变量添加到构建,类似于 Dockerfile 中的 ENV
指令,如下所示:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>2.8.0</version>
<configuration>
<to>
<image>gcr.io/PROJECT/IMAGE</image>
</to>
<container>
<environment>
<ENV_VAR>VALUE</ENV_VAR>
</environment>
</container>
</configuration>
</plugin>
替换
- 将 PROJECT 替换为 Google Cloud 项目 ID。
- 将 IMAGE 替换为您的映像名称。
- 将 ENV_VAR 替换为
NAME
。 - 将 VALUE 替换为所需的值。
现在,您的应用将使用 Hello <var>VALUE</var>!
进行响应
更改基础映像
基础映像与 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>
尝试将 from.image
字段更新为其他 Java 基础映像,例如 openjdk:8-alpine
。
自定义其他 Java 方面
Jib 支持运行应用时可能需要的 Java 运行时配置。如需更多自定义信息,请参阅扩展用途。
开发代码
设置 gcloud 默认值
要配置您的 Cloud Run 服务的 gcloud 默认值,请执行以下操作:
设置默认项目:
gcloud config set project PROJECT_ID
将 PROJECT_ID 替换为您在本教程中创建的项目的名称。
为您选择的区域配置 gcloud:
gcloud config set run/region REGION
将 REGION 替换为您选择的受支持的 Cloud Run 区域。
Cloud Run 位置
Cloud Run 是地区级的,这意味着运行 Cloud Run 服务的基础架构位于特定地区,并且由 Google 代管,以便在该地区内的所有区域以冗余方式提供。
选择用于运行 Cloud Run 服务的地区时,主要考虑该地区能否满足您的延迟时间、可用性或耐用性要求。通常,您可以选择距离用户最近的地区,但除此之外,您还应该考虑 Cloud Run 服务使用的其他 Google Cloud 产品的位置。跨多个位置使用 Google Cloud 产品可能会影响服务的延迟时间和费用。
Cloud Run 可在以下地区使用:
基于层级 1 价格
asia-east1
(台湾)asia-northeast1
(东京)asia-northeast2
(大阪)europe-north1
(芬兰) 二氧化碳排放量低europe-west1
(比利时) 二氧化碳排放量低europe-west4
(荷兰)us-central1
(爱荷华) 二氧化碳排放量低us-east1
(南卡罗来纳)us-east4
(北弗吉尼亚)us-west1
(俄勒冈) 二氧化碳排放量低
基于层级 2 价格
asia-east2
(香港)asia-northeast3
(韩国首尔)asia-southeast1
(新加坡)asia-southeast2
(雅加达)asia-south1
(印度孟买)asia-south2
(印度德里)australia-southeast1
(悉尼)australia-southeast2
(墨尔本)europe-central2
(波兰,华沙)europe-west2
(英国伦敦)europe-west3
(德国法兰克福)europe-west6
(瑞士苏黎世) 二氧化碳排放量低northamerica-northeast1
(蒙特利尔) 二氧化碳排放量低northamerica-northeast2
(多伦多) 二氧化碳排放量低southamerica-east1
(巴西圣保罗) 二氧化碳排放量低southamerica-west1
(智利圣地亚哥)us-west2
(洛杉矶)us-west3
(盐湖城)us-west4
(拉斯维加斯)
如果您已创建 Cloud Run 服务,则可以在 Cloud Console 的 Cloud Run 信息中心查看相应的地区。
部署到 Cloud Run
使用 gcloud
CLI 从 Container Registry 中将容器部署到 Cloud Run 或 Cloud Run for Anthos。
使用以下命令部署容器映像:
gcloud run deploy SERVICE-NAME \ --image gcr.io/PROJECT/IMAGE \ --platform managed
替换
- 将 SERVICE-NAME 替换为您选择的服务名称。
- 将 PROJECT 替换为 Google Cloud 项目 ID。
- 将 IMAGE 替换为您的映像名称。
请注意,容器映像已部署到您之前在设置 gcloud 中配置的服务和区域 (Cloud Run) 或集群 (Cloud Run for Anthos)。
如果部署到 Cloud Run,系统会提示您允许未通过身份验证的调用。如果您希望立即访问自己的服务,请在出现“允许未通过身份验证的调用”提示时回复 y
“是”。如果您的服务是私有的,并且请求必须包含身份验证,请在出现“允许未通过身份验证的调用”提示时回复 n
“否”。
如果您的服务是公共的,请使用成功部署后显示的网址来访问部署的容器。如果您的服务是私有的,请使用以下 curl
命令来调用您的服务:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL
如果部署到 Cloud Run for Anthos,请参阅访问已部署的服务。
清除数据
如果您为本教程创建了一个新项目,请删除项目。 如果您使用的是现有项目,希望保留此项目且不保留本教程中添加的任何更改,请删除为教程创建的资源。
删除项目
为了避免产生费用,最简单的方法是删除您为本教程创建的项目。
如需删除项目,请执行以下操作:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
删除教程资源
删除您在本教程中部署的 Cloud Run 服务:
gcloud run services delete SERVICE-NAME
其中,SERVICE-NAME 是您选择的服务名称。
您还可以从 Google Cloud Console 中删除 Cloud Run 服务。
移除您在教程设置过程中添加的 gcloud 默认区域配置:
gcloud config unset run/region
移除项目配置:
gcloud config unset project
后续步骤
- 如需详细了解容器在部署到 Cloud Run 时必须遵循的合同,请参阅容器合同。
- 要使用 Cloud Build 触发器实现 Cloud Run 服务的自动构建和部署,请设置持续部署。
- 如需详细了解如何使用和自定义 Jib,请参阅 Jib 的 GitHub 代码库。