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 个上下文。
- 你的本地电台,有你自己的docker。
- 基于云的 Google 容器注册表:https://console.cloud.google.com/gcr/
- 来自 GCP 的云 运行 产品
所以步骤是:
在本地或使用 Cloud Build 构建您的容器
将容器推送到 GCR 注册表,
如果您在本地构建
docker 标记 busybox gcr.io/my-project/busybox
docker 推送 gcr.io/my-project/busybox
部署到云 运行 来自 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)
我通过
解决了这个问题
- 更新
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
我对 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 个上下文。
- 你的本地电台,有你自己的docker。
- 基于云的 Google 容器注册表:https://console.cloud.google.com/gcr/
- 来自 GCP 的云 运行 产品
所以步骤是:
在本地或使用 Cloud Build 构建您的容器
将容器推送到 GCR 注册表, 如果您在本地构建
docker 标记 busybox gcr.io/my-project/busybox docker 推送 gcr.io/my-project/busybox
部署到云 运行 来自 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)
我通过
解决了这个问题- 更新
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