我正试图使用cloudbuild在计算引擎上部署我的容器映像。yaml
但出现错误。下面是我的cloudbuild。yaml
文件内容:
# gis-account-manager -> Project ID on GCP
steps:
# Build the Docker image.
- name: gcr.io/cloud-builders/docker
args: ['build', '-t', 'gcr.io/gis-account-manager/ams', '-f', 'Dockerfile', '.']
# Push it to GCR.
- name: gcr.io/cloud-builders/docker
args: ['push', 'gcr.io/gis-account-manager/ams']
# Deploy to Prod env (THIS STEP IS FAILING)
- name: gcr.io/cloud-builders/gcloud
args: [ 'compute', 'instances', 'update-container', 'instance-2-production' , '--container-image', 'gcr.io/gis-account-manager/ams:latest']
# Set the Docker image in Cloud Build
images: ['gcr.io/gis-account-manager/ams']
# Build timeout
timeout: '3600s'
错误:
开始步骤#2
步骤#2:已经有图像(带摘要):gcr.io/cloud-builders/gcloud
步骤2:错误:(gcloud.compute.instances.update container)未指定的资源[instance-2-production]。指定[--zone]标志。
如果我从Cloud SDK Sheel运行相同的命令,它将按预期工作。
PS:我也尝试过提供区域标志。
我已经通过服务号验证解决了这个问题(首先需要为计算引擎服务帐户生成密钥)。
更新了cloudbuild。yaml
文件:
# Deploy to GOOGLE COMPUTE ENGINE Prod env
- name: gcr.io/cloud-builders/gcloud
args: [ 'auth', 'activate-service-account', '123456789-compute@developer.gserviceaccount.com', '--key-file=PATH_TO_FILE', '--project=${_PROJECT_ID}']
- name: gcr.io/cloud-builders/gcloud
args: ['compute', 'instances', 'update-container', '${_VM_INSTANCE}' , '--container-image=gcr.io/${_PROJECT_ID}/ams:latest', '--zone=us-central1-a']
Cloud Build没有足够的权限来执行操作,因此在Cloud Build上操作时会收到错误,但在gCloud
命令行工具中执行相同的操作时不会收到错误,该工具的工作方式不同。
我授予这些云构建服务帐户和云构建服务代理计算管理员角色:
我的cloudbuild。yaml
看起来与您现在应该拥有的完全相同:
steps:
- name: gcr.io/cloud-builders/gcloud
args: [ 'config', 'set', 'compute/zone', 'YOUR_ZONE']
- name: gcr.io/cloud-builders/gcloud
args: [ 'compute', 'instances', 'update-container', '[YOUR_INSTANCE_NAME]' , '--container-image', 'gcr.io/gis-account-manager/ams:latest']
其中,[YOUR_ZONE]
是您配置的区域,[YOUR_INSTANCE_NAME]
是您实例的名称。
我建议您阅读本文档,了解有关云构建服务帐户权限的更多信息。
您需要在gcloud compute命令中指定区域:
# Deploy to Prod env (THIS STEP IS FAILING)
- name: gcr.io/cloud-builders/gcloud
args: [ 'config', 'set', 'compute/zone', 'us-central1-a']
- name: gcr.io/cloud-builders/gcloud
args: [ 'compute', 'instances', 'update-container', 'instance-2-production' , '--container-image', 'gcr.io/gis-account-manager/ams:latest']
您需要在此列表中按区域更改asia-east1。由于您正在更新容器,因此可能已经指定了区域。
您可以编写命令:gcloud compute zones list
,列出所有可用区域
有人知道可能发生了什么吗? 其他信息:
我尝试部署我创建的本地容器映像之一,但总是得到以下错误 无法拉出映像“webrole1:dev”:rpc错误:code=未知desc=守护进程的错误响应:对webrole1的拉出访问被拒绝,存储库不存在或可能需要“docker登录”:被拒绝:请求访问 我已经按照下面的文章来容器我的应用程序,我能够成功地完成这一点,但当我试图将它部署到k8s pod时,我没有成功 下面是我的PowerShell中的
我试着在这些问题中应用所有的解决方案: 在我的web.xml中,我使用了标记'res-ref-name'。 多谢!
我尝试构建twitter-connector-1.0.0和2.0.0。1.1.0的连接器文件 2.0.0的连接器文件
我们可以在单独的docker容器中部署apache和php,然后将它们链接起来。 但是有没有办法在docker容器中本地安装apache(使用apt get install apache2)和php fpm,然后链接它们? 谢谢
当我试图在heroku上部署springboot应用程序时,出现了以下错误: 无法执行目标org.apache.Maven.plugins:maven-compiler-plugin:3.8.1:在项目后端编译(default-compile):错误编译:无效的目标版本:11->[Help 1]Remote:[error]Remote:[error]要查看错误的全部堆栈跟踪,请使用-e开关重新运行