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

Cloud Build无法将Secret Manager中的值传递为环境变量,Python脚本无法获取正确值

Cloud Build无法将Secret Manager中的值传递为环境变量,Python脚本无法获取正确值

我看了你的配置,发现几个关键问题导致Secret Manager里的WEBAPP值没正确传递到Python脚本里,咱们一步步来修正:

1. Dockerfile中ARG参数名不匹配

你在Cloud Build步骤里传递的构建参数是WEBAPP=$$WEBAPP,但Dockerfile里写的是ARG GT_WEBAPP——这俩名称完全对不上,Docker根本接收不到WEBAPP的秘密值!

修改你的Dockerfile,把ARG名称改成WEBAPP,确保和Cloud Build传递的参数一致:

FROM python:3.11-slim-buster

# 修正ARG名称,和Cloud Build传递的参数对应
ARG WEBAPP
ARG GOOGLE_CLOUD_PROJECT

# 把ARG的值赋值给环境变量,让Python脚本能读取到
ENV GOOGLE_CLOUD_PROJECT=$GOOGLE_CLOUD_PROJECT
ENV WEBAPP=$WEBAPP

WORKDIR /app

RUN python -m pip install --upgrade pip --no-cache-dir
COPY requirements.txt /app/
RUN pip install --no-cache-dir -r requirements.txt

COPY main.py /app/

# 非root用户运行(安全建议)
RUN useradd -m image_user
USER image_user

CMD ["python", "main.py"]

2. 修正Cloud Build中的变量名笔误

你的substitutions里写了_DATABASE_PORT,但值是镜像仓库地址,而后面步骤用的是${FORECASTS_IMAGE}——这明显是变量名写错了,会导致镜像标签替换失败。把变量名改成_FORECASTS_IMAGE:

substitutions:
  _FORECASTS_IMAGE: 'us-central1-docker.pkg.dev/${PROJECT_ID}/forecasts-repo/get-forecasts'

这样Cloud Build就能正确识别${FORECASTS_IMAGE}这个变量了。

3. 验证Python脚本的环境变量读取

你的Python代码用os.getenv的方式是对的,不过可以加个调试打印,方便确认值是否正确获取:

import os

PROJECT_ID = os.getenv('GOOGLE_CLOUD_PROJECT')
web_url = os.getenv('WEBAPP')

# 调试打印,确认值是否正确
print(f"获取到的PROJECT_ID: {PROJECT_ID}")
print(f"获取到的WEBAPP地址: {web_url}")

最后,确认Cloud Build的Secret配置

你已经开启了dynamicSubstitutions: true,并且正确配置了secretEnv和Secret Manager版本,这部分没问题——只要上面的参数名匹配、变量名修正,秘密值就能正确传递到Docker构建过程,最终被Python脚本读取到。

修改完这些后,重新触发Cloud Build构建,你的Python脚本应该就能拿到正确的WEBAPP和GOOGLE_CLOUD_PROJECT值了。

备注:内容来源于stack exchange,提问作者Estaar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 09:59:32