在构建 Docker 映像时向 Google Build 授予对 Google 存储桶的访问权限

Jer*_*hoy 2 google-cloud-storage google-cloud-platform google-cloud-build

我是谷歌云服务的新手,我正在尝试设置我的产品的自动构建,需要下载大量文件。

我想从 Docker 构建过程中的专用 Google Storage 存储桶下载文件。为此,我已将以下行添加到我的Dockerfile

RUN curl https://storage.cloud.google.com/[bucketname]/[filename] -o [filename]
Run Code Online (Sandbox Code Playgroud)

由于此存储桶中的文件不应公开访问,因此我禁用了对象级别权限并将权限添加到成员[ProjectID]@cloudbuild.gserviceaccount.comStorage Object Viewer

但是当docker文件脚本运行时,下载的文件是空的

Step 7/9 : RUN curl https://storage.cloud.google.com/[bucketname]/[filename] -o [filename]
 ---> Running in 5d1a5a1bbe87
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
Removing intermediate container 5d1a5a1bbe87
 ---> 42938a9cc8d1
Step 8/9 : RUN ls -l [filename]
 ---> Running in 34ac112051a1
-rw-r--r-- 1 root root 0 Jun 15 00:37 [filename]
Run Code Online (Sandbox Code Playgroud)

如果我登录 google.console 并通过我的导航器访问它,则此链接非常有效。

我尝试更改权限设置,最终将cloud build account, storage legacy bucket reader, storage legacy object reader, 加storage object viewer在一起,但没有取得多大成功。

我显然做错了什么。但我不清楚如果:

  • 此链接格式仅在控制台中有效,我应该使用其他 URL 来获取此文件
  • 权限配置错误
  • 我仍然需要通过 curl 处理一些 http 授权
  • 我在俯瞰别的东西。

谢谢你的帮助 :)

Jer*_*hoy 5

经过长时间的研究、尝试和错误,我设法找到了一个很好的方法。这是那些可能需要重现类似设置的人以及我未来的我的食谱。

RUN curl https://sdk.cloud.google.com | bash > /dev/null
ENV PATH="${PATH}:/root/google-cloud-sdk/bin"
Run Code Online (Sandbox Code Playgroud)

巧克力蛋糕或甜食来祝贺自己。(:

奖励:如果像我一样你的 docker 构建超时,你必须cloudbuild.yaml在你的Dockerfile. 这是我用于构建的通用文件:

steps:
- name: 'gcr.io/cloud-builders/docker'
  args: [ 'build', '-t', 'gcr.io/$PROJECT_ID/$REPO_NAME:$BUILD_ID', '.' ]
images:
- 'gcr.io/$PROJECT_ID/$REPO_NAME:$BUILD_ID'
timeout: 900s
Run Code Online (Sandbox Code Playgroud)