如何使用 gradle jib 插件将镜像推送到谷歌云容器注册表

问题描述

如何使用 gradle jib 插件将镜像推送到谷歌云容器注册

我正在尝试部署一个简单的 Spring-Boot 应用程序并使用谷歌云和谷歌 Kubernetes 引擎 (GKE) 进行部署。我也在关注 tutorial,但是教程使用的是 maven,我想尝试在我的项目中使用 gradle。我可以构建自己的 docker 镜像,也可以在 google 的云 shell 中运行 docker 镜像,但我似乎不知道如何将镜像推送到容器注册表。

教程给出的maven命令是

./mvnw -DskipTests com.google.cloud.tools:jib-maven-plugin:build -Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/hello-java:v1

我曾尝试使用 gradle 版本,但出了点问题,我无法弄清楚它是什么,以及尝试了 docs 中的一些说明。

./gradlew build com.google.cloud.tools.jib:build -Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/hello-java:v3

我认为我不需要在 build.gradle 文件添加插件,但我可能是错的,我是使用 jib 工具的新手。

然后我将能够使用以下内容运行图像

docker run -ti --rm -p 8080:8080 gcr.io/$GOOGLE_CLOUD_PROJECT/hello-java:v1

我要部署的存储库位于 here

作为次要问题,是否可以从我的本地开发环境将图像发布到 Google Cloud 容器注册表,还是必须通过 Google Cloud Shell 将图像推送到注册表?

解决方法

更新:我想通了 - 虽然我想在未来解决这个问题,但我不必使用副臂。我将尝试使用我的 gradle 配置,看看这是否是一个可能的问题,但我使用的是 Gradle 6.3,所以我认为这不是问题。

从我构建的 docker 镜像中,我可以像这样使用 docker push 命令

docker push gcr.io/<application-name>/<image-name>:<tag>

在我允许从云外壳访问注册表后,我的图像显示在容器注册表中。