docker - GCP Cloud 构建密码到 docker arg

标签 docker google-cloud-platform

我打算将我的 npm token 传递给 gcp 云构建,
这样我就可以在多阶段构建中使用它来安装私有(private) 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= < npm-token.txt”不起作用。
当我直接传入 npm token 时,我已经测试了 DockerFile,它可以工作。我只是在将 gcloud secret 中的 token 作为构建参数传递给 docker 时遇到了麻烦。

非常感谢您的帮助!

最佳答案

您的目标是将 secret 文件内容放入构建参数中。因此,您必须使用 NPM_TOKEN="$(cat npm-token.txt)" 读取文件内容。或 NPM_TOKEN="$(< 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。

另请注意,您将 secret 保存到构建 workspace (/工作区/..)。这也允许您将 secret 作为文件复制到您的容器中。
FROM ubuntu:14.04 AS build
ARG NPM_TOKEN

COPY npm-token.txt .
RUN echo "NPM_TOKEN:: $(cat npm-token.txt)"

关于docker - GCP Cloud 构建密码到 docker arg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62285544/

相关文章:

Dockerfile 入口点无法切换用户

docker - Minecraft Docker镜像:游戏存储持久性

docker - sh:grep:找不到命令

google-cloud-platform - Google Dataflow 中的单例

node.js - 谷歌云功能从第三方服务器获取数据

Docker 和 UFW 具有真实 IP

google-app-engine - 身份 Google App Engine 环境类型

https - 如何在 GCP 中使用 https 访问虚拟机实例

firebase - 错误:获取存储源时出错:generic::unknown... 当通过 GitHub Actions 部署 GCP Cloud Function 时

docker - 在Docker镜像的kubernetes安装卷中找不到现有的二进制可执行文件