0

我在 Google 的 Container Registry 中创建了一个镜像的 GitHub 存储库,然后创建了一个 Build Trigger。存储库中的 dockerfile 包括gsutil -m rsync -r gs://asset-bucket/ local-dir/,以便我可以将共享的私有资产移动到容器中。但我收到一个错误:

ServiceException: 401 Anonymous caller does not have storage.objects.list access to asset-bucket

我有一个自动创建的服务帐户 (@cloudbuild.gserviceaccount.com) 用于构建,它具有 Cloud Container Builder 角色。我尝试添加存储对象查看器,但仍然收到错误消息。

容器构建器不应该自动拥有适当的权限吗?

4

2 回答 2

2

您是否使用gcr.io/cloud-builders/gsutil构建步骤来执行此操作?那应该正确使用默认凭据,并且应该可以正常工作。

steps:
  - name: 'gcr.io/cloud-builders/gsutil'
    args: [ "-m", "rsync", "gs://asset-bucket/", "local-dir/" ]

或者,您可以尝试GCS Fetcher

于 2018-06-20T16:06:19.610 回答
0

只是为了具体说明@david-bendory 的答案,特权调用不能在 dockerfile 中发生。我创建了一个cloudbuild.yaml看起来像这样的:

steps:
- name: 'gcr.io/cloud-builders/gsutil'
  args: [ "-m", "rsync", "-r", "gs://my-assets/", "." ]
  dir: "static"
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/$PROJECT_ID/project-name', '.']
images: ['gcr.io/$PROJECT_ID/project-name']

和一个dockerfile包括

COPY static/* www/
于 2018-06-23T22:29:37.600 回答