Gcloud and docker confusion



我在gcloud verse docker的步骤上非常失落。我有一些gradle代码来构建docker映像,我在以下图像中看到它

(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 push或不,或者如果我可以直接到gcloud运行部署,所以我尝试像这样的docker push

(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 run deploy like so

(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.

我做这些都是作为一个游乐场项目,似乎甚至不能得到一个云运行部署和运行。

我尝试了spring的例子,但它甚至没有创建一个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.

当图像没有在本地/正确标记时发生此错误。你可以在你这边试试。

  • 在本地创建名称为stockstuff的图像(创建时不要以gcr和项目名作为前缀)。
  • 用gcr repo detail标记图像
$ docker tag stockstuff:latest gcr.io/prod-stockstuff-bot/stockstuff:latest
  • 检查您的映像是否在GCR中可用(必须在这里查看您的映像,然后在cloudrun上部署)。
$ gcloud container images list --repository gcr.io/prod-stockstuff-bot
  • 如果您可以在列表中看到您的映像,接下来您可以尝试使用以下命令(作为您的)部署gcloud run。
gcloud run deploy stockstuff --project prod-stock-bot --region us-west1 --image gcr.io/prod-stockstuff-bot/stockstuff --platform managed

你需要注意以下三种情况:

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

步骤如下:

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

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

    docker tag busybox gcr.io/my-project/busybox .iopush gcr.io/my-project/busybox

  3. 从Google Cloud Repository中运行一个容器。

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

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

我用

解决了这个问题
  1. updategcloud-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

最新更新