注入服务帐户json作为docker构建的一部分



作为构建过程的一部分,我需要从我的私有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服务帐户访问您的桶。

最新更新