我在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
你需要注意以下三种情况:
- 你的本地站点,有你自己的docker。
- 基于云的Google容器注册表:https://console.cloud.google.com/gcr/
- GCP 云运行产品
步骤如下:
-
在本地或使用Cloud Build构建容器
-
将容器推送到GCR注册表,如果您在本地构建
docker tag busybox gcr.io/my-project/busybox .iopush gcr.io/my-project/busybox
-
从Google Cloud Repository中运行一个容器。
当您列出本地系统中的图像时,我没有看到此图像gcr.io/prod-stockstuff-bot/stockstuff
。您可以通过将该映像标记为gcr.io/prod-stock-bot/stockstuff
并重新运行gcloud run命令来创建新映像。
对于上下文,我使用Flask (python)
我用
解决了这个问题- update
gcloud-sdk
到最新版本
gcloud components update
- 添加
.dockerignore
,我猜是因为python缓存
Dockerfile
README.md
*.pyc
*.pyo
*.pyd
__pycache__
.pytest_cache
- 将端口暴露给env $ port
CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 app:app