如何解决将服务帐户 json 作为 docker build 的一部分注入
作为构建过程的一部分,我需要从我的私有 gcs 存储桶下载一些 python 包并将它们安装为 Dockerfile 的一部分。这可以使用像这样的多阶段构建来完成:
FROM google/cloud-sdk:alpine as gcloud
WORKDIR /packages
RUN gsutil cp gs://... /packages
FROM python:3.7.0
COPY --from=gcloud /packages .
但是我在从本地计算机注入服务帐户时遇到了大问题,以便 gsutil
能够执行复制。我尝试通过 ARG
捕获服务帐户 json 的内容,但由于其 json 格式,它不适用于 cloudbuild 替换:
gcloud builds submit . --substitutions _SERVICE_ACCOUNT_CONTENT="$(cat path_to_service_account.json)"
我也考虑过步骤之间的共享卷,但它不适用于 docker build
。任何想法如何使用 cloudbuild 来做到这一点?
解决方法
我的建议是在 Docker Build 之外执行此操作,并利用 Cloud Build 内置的身份验证机制(通过元数据服务器)下载文件。
在您的云构建步骤中
steps:
- name: 'gcr.io/cloud-builders/gsutil'
args: ["cp","gs://...","./packages"]
- name: 'gcr.io/cloud-builders/docker'
args: [ 'build','-t','gcr.io/<PROJECT_ID>/......','.' ]
在你的 Dockerfile 中
FROM python:3.7.0
COPY packages/* /packages/
.....
只需授予 Cloud Build 服务帐号访问您的存储桶即可。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。