【问题标题】:GCP Cloud build pass secret to docker argGCP Cloud 构建密码到 docker arg
【发布时间】:2023-03-29 09:26:01
【问题描述】:

我打算将我的 npm 令牌传递给 gcp 云构建, 这样我就可以在多阶段构建中使用它来安装私有 npm 包。

我有以下删节的 Dockerfile:

FROM ubuntu:14.04 AS build
ARG NPM_TOKEN

RUN echo "NPM_TOKEN:: ${NPM_TOKEN}"

以及以下删节的 cloudbuild.yaml:

---
  steps:
  - name: gcr.io/cloud-builders/gcloud
    entrypoint: 'bash'
    args: [ '-c', 'gcloud secrets versions access latest --secret=my-npm-token > npm-token.txt' ]
  - name: gcr.io/cloud-builders/docker
    args:
    - build
    - "-t"
    - gcr.io/my-project/my-program
    - "."
    - "--build-arg NPM_TOKEN= < npm-token.txt"
    - "--no-cache"

我的 cloudbuild.yaml 基于 documentation,但似乎我无法将两个和两个放在一起,如表达式:“--build-arg NPM_TOKEN=

非常感谢您的帮助!

【问题讨论】:

    标签: docker google-cloud-platform


    【解决方案1】:

    您的目标是将秘密文件内容放入构建参数中。因此,您必须使用NPM_TOKEN="$(cat npm-token.txt)"NPM_TOKEN="$(&lt; npm-token.txt)"读取文件内容。

      name: gcr.io/cloud-builders/docker
      entrypoint: 'bash'
      args: [ '-c', 'docker build -t gcr.io/my-project/my-program . --build-arg NPM_TOKEN="$(cat npm-token.txt)" --no-cache' ]
    

    注意:gcr.io/cloud-builders/docker 但是使用 exec 入口点形式。因此,您将入口点设置为 bash。

    另请注意,您将密钥保存到构建 workspace (/workspace/..)。这也允许您将密钥作为文件复制到您的容器中。

    FROM ubuntu:14.04 AS build
    ARG NPM_TOKEN
    
    COPY npm-token.txt .
    RUN echo "NPM_TOKEN:: $(cat npm-token.txt)"
    

    【讨论】:

    • 感谢您的回答。最后,我只是将自定义图像上传到 gcr。在我看来,云构建只是一种不必要的抽象。
    【解决方案2】:

    我不会像你那样写你的第二步,而是这样:

      - name: gcr.io/cloud-builders/docker
        entrypoint: "bash"
        args:
        - "-c"
        - |
            build -t gcr.io/my-project/my-program . --build-arg NPM_TOKEN=$(cat npm-token.txt) --no-cache
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多