相关疑难解决方法(0)

不尊重 Google Cloud Build Docker build-arg

我在使用 Google Cloud Build 时遇到问题,其中 docker build 命令似乎不接受 build-arg 选项,即使该命令在本地按预期工作:

Dockerfile:

ARG ASSETS_ENV=development
RUN echo "ASSETS_ENV is ${ASSETS_ENV}"
Run Code Online (Sandbox Code Playgroud)

构建命令:

docker build --build-arg="ASSETS_ENV=production" .
Run Code Online (Sandbox Code Playgroud)

本地结果:

ASSETS_ENV is production
Run Code Online (Sandbox Code Playgroud)

Cloud Build 的结果:

ASSETS_ENV is development
Run Code Online (Sandbox Code Playgroud)

docker google-cloud-platform google-cloud-build

2
推荐指数
1
解决办法
688
查看次数

如何使用 Google Secrets Manager 在 Google Cloud Build 中创建 docker ARG?

我正在 GCB 上进行构建,其中需要安装私有依赖项,因此我使用 Google Secrets Manager。我的 cloudbuild.yaml 如下所示:

steps:
- name: gcr.io/cloud-builders/gcloud
  entrypoint: 'bash'
  args: [ '-c', "gcloud secrets versions access latest --secret=PERSONAL_ACCESS_TOKEN_GITHUB --format='get(payload.data)' | tr '_-' '/+' | base64 -d > decrypted-pat.txt" ]
- name: 'gcr.io/cloud-builders/docker'
  args:
    - build
    - '--build-arg'
    - PERSONAL_ACCESS_TOKEN_GITHUB=$(cat decrypted-pat.txt)
    - '-t'
    - 'gcr.io/$PROJECT_ID/$REPO_NAME:$TAG_NAME'
    - .
images: [ gcr.io/$PROJECT_ID/$REPO_NAME:$TAG_NAME ]
Run Code Online (Sandbox Code Playgroud)

但是,$(cat decrypted-pat.txt)没有得到评估。插入:RUN echo https://${PERSONAL_ACCESS_TOKEN_GITHUB}@github.com到我的 dockerfile 中只是回显文字:当然, https://$(cat decrypted-pat.txt)@github.com这不是我正在寻找的命令(是的,如果我得到的东西实际上成功回显,我将旋转令牌)。

gcb/secrets 文档中有一条注释

要在环境变量中使用机密,您需要在变量名称前添加下划线“_”前缀,并使用“(”对值进行转义。例如:_VARIABLE_NAME=$(cat password.txt) && echo -n )_VARIABLE_NAME。

但这对我来说在构建参数中使用没有多大意义。

如何将此秘密的实际值作为构建参数放入容器中?

docker google-cloud-platform google-cloud-build google-secret-manager

2
推荐指数
1
解决办法
3181
查看次数