Gcloud 和 docker 混淆

Gcloud and docker confusion

我对 gcloud verse docker 的步骤感到非常迷茫。我有一些构建 docker 图像的 gradle 代码,我在这样的图像中看到它

(base) Deans-MacBook-Pro:stockstuff-all dean$ docker images
REPOSITORY                         TAG       IMAGE ID       CREATED          SIZE
gcr.io/prod-stock-bot/stockstuff   latest    b041e2925ee5   27 minutes ago   254MB

我不清楚我是否需​​要 运行 docker 推送或者我是否可以直接访问 gcloud 运行 部署所以我尝试 docker 推送所以

(base) Deans-MacBook-Pro:stockstuff-all dean$ docker push gcr.io/prod-stockstuff-bot/stockstuff
Using default tag: latest
The push refers to repository [gcr.io/prod-stockstuff-bot/stockstuff]
An image does not exist locally with the tag: gcr.io/prod-stockstuff-bot/stockstuff

我不知道为什么我一直列出图片时它说该图片在本地不存在。我继续尝试 gcloud 运行 像这样部署

(base) Deans-MacBook-Pro:stockstuff-all dean$ gcloud run deploy stockstuff --project prod-stock-bot --region us-west1 --image gcr.io/prod-stockstuff-bot/stockstuff --platform managed
Deploying container to Cloud Run service [stockstuff] in project [prod-stock-bot] region [us-west1]
X Deploying... Image 'gcr.io/prod-stockstuff-bot/stockstuff' not found.
  X Creating Revision... Image 'gcr.io/prod-stockstuff-bot/stockstuff' not found.
  . Routing traffic...
Deployment failed
ERROR: (gcloud.run.deploy) Image 'gcr.io/prod-stockstuff-bot/stockstuff' not found.

我正在做这一切作为一个游乐场项目,似乎甚至无法部署云 运行 并 运行ning。

我尝试了 the spring example,但它甚至没有创建 docker 图像,而且无论如何它都失败了

ERROR: (gcloud.run.deploy) Missing required argument [--image]: Requires a container image to deploy (e.g. `gcr.io/cloudrun/hello:latest`) if no build source is provided.

您需要了解 3 个上下文。

  1. 你的本地电台,有你自己的docker。
  2. 基于云的 Google 容器注册表:https://console.cloud.google.com/gcr/
  3. 来自 GCP 的云 运行 产品

所以步骤是:

  1. 在本地或使用 Cloud Build 构建您的容器

  2. 将容器推送到 GCR 注册表, 如果您在本地构建

    docker 标记 busybox gcr.io/my-project/busybox docker 推送 gcr.io/my-project/busybox

  3. 部署到云 运行 来自 Google 云存储库的容器。

当图像未标记时会出现此错误 locally/correctly。您可以自己尝试的步骤。

  • 在本地创建名称为 stockstuff 的图像(创建时不要使用 gcr 和项目名称作为前缀)。
  • 使用 gcr 存储库详细信息标记图片
$ docker tag stockstuff:latest gcr.io/prod-stockstuff-bot/stockstuff:latest
  • 检查您的图像在 GCR 中是否可用(必须在此处查看您的图像,然后再部署到云端运行)。
$ gcloud container images list --repository gcr.io/prod-stockstuff-bot
  • 如果您可以在列表中看到您的图像,接下来您可以尝试使用以下命令(如您的命令)部署 gcloud 运行。
gcloud run deploy stockstuff --project prod-stock-bot --region us-west1 --image gcr.io/prod-stockstuff-bot/stockstuff --platform managed

当您在本地系统中列出图像时,我没有看到此图像 gcr.io/prod-stockstuff-bot/stockstuff。您可以通过使用此图像 gcr.io/prod-stock-bot/stockstuff 标记该图像并重新 运行 gcloud 运行 命令来创建新图像。

对于上下文,我正在使用 Flask (python)

我通过

解决了这个问题
  1. 更新gcloud-sdk到最新版本
gcloud components update
  1. 添加 .dockerignore,我猜是因为 python 缓存
Dockerfile
README.md
*.pyc
*.pyo
*.pyd
__pycache__
.pytest_cache
  1. 将端口暴露给 env $PORT
CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 app:app