当前位置: 首页 > 知识库问答 >
问题:

无法在Google Compute Engine上部署容器映像

姚阳德
2023-03-14

我正试图使用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:我也尝试过提供区域标志。

共有3个答案

冯良才
2023-03-14

我已经通过服务号验证解决了这个问题(首先需要为计算引擎服务帐户生成密钥)。

更新了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']
梁承恩
2023-03-14

Cloud Build没有足够的权限来执行操作,因此在Cloud Build上操作时会收到错误,但在gCloud命令行工具中执行相同的操作时不会收到错误,该工具的工作方式不同。

我授予这些云构建服务帐户和云构建服务代理计算管理员角色:

  • [编辑]@cloudbuild。gserviceaccount。com`

我的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]是您实例的名称。

我建议您阅读本文档,了解有关云构建服务帐户权限的更多信息。

詹唯
2023-03-14

您需要在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开关重新运行