You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dockerfile构建阶段访问Cloud Run中定义的环境变量

核心原因

Cloud Run 「REVISIONS > SECRETS AND VARIABLES」中配置的参数仅作用于容器运行时阶段,不会被传递到镜像构建阶段,所以你在Dockerfile的构建步骤里无法直接读取这些值。你需要通过Cloud Build配置从Secret Manager中拉取敏感值,再传递给Docker构建的ARG参数。


步骤1:前置配置

  • 把敏感凭证APP_USR、APP_PASS存入Google Cloud Secret Manager,对应密钥ID可设为APP_USR、APP_PASS
  • 给Cloud Build默认服务账号(格式为[你的项目编号]@cloudbuild.gserviceaccount.com)授予Secret Manager 秘密访问者角色,否则构建时无法拉取密钥值

步骤2:编写cloudbuild.yaml配置

直接替换以下示例中的占位符即可使用:

steps:
  # 第一步:构建镜像,从Secret Manager拉取密钥传递给Docker ARG
  - name: 'gcr.io/cloud-builders/docker'
    secretEnv: ['APP_USR', 'APP_PASS']
    args:
      - build
      - --build-arg
      - APP_USR=$$APP_USR
      - --build-arg
      - APP_PASS=$$APP_PASS
      - -t
      - 'gcr.io/$PROJECT_ID/[你的镜像名称]:$COMMIT_SHA'
      - .
  # 第二步:将构建好的镜像推送到容器镜像仓库
  - name: 'gcr.io/cloud-builders/docker'
    args: ['push', 'gcr.io/$PROJECT_ID/[你的镜像名称]:$COMMIT_SHA']
  # 第三步:部署到Cloud Run
  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
    entrypoint: gcloud
    args:
      - run
      - deploy
      - [你的Cloud Run服务名]
      - --image
      - 'gcr.io/$PROJECT_ID/[你的镜像名称]:$COMMIT_SHA'
      - --region
      - [你的服务部署区域,比如us-central1]
      - --platform
      - managed
# 声明要从Secret Manager拉取的密钥
availableSecrets:
  secretManager:
    - versionName: projects/$PROJECT_ID/secrets/APP_USR/versions/latest
      env: 'APP_USR'
    - versionName: projects/$PROJECT_ID/secrets/APP_PASS/versions/latest
      env: 'APP_PASS'
# 配置镜像保存规则
images:
  - 'gcr.io/$PROJECT_ID/[你的镜像名称]:$COMMIT_SHA'

步骤3:修正Dockerfile笔误

你现有Dockerfile里存在变量名拼写错误,会导致凭证读取失效,修正后如下:

ARG APP_USR
ENV APP_USR ${APP_USR}

ARG APP_PASS
# 原写法多了一个下划线,改为${APP_PASS}
ENV APP_PASS ${APP_PASS}

RUN pip install https://${APP_USR}:${APP_PASS}@github.org/*****/master.zip

额外说明

如果是不需要加密的普通非敏感构建参数,不需要配置Secret Manager,直接在cloudbuild.yaml的docker build步骤的args里写死值,或者通过Cloud Build触发器的变量配置传入即可,不需要走secretEnv配置。


内容的提问来源于stack exchange,提问作者Finglish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:48:04