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

如何通过Cloud Build部署Cloud Run时向Python程序传参?

解决Cloud Run部署时传入变量给Python代码的问题

问题原因

你用--args='_arg1=${_Value}'导致启动失败,是因为Cloud Run的--args参数会完全替换Dockerfile中的CMD指令。原来的CMD是启动uvicorn,但添加该参数后,容器会把_arg1=${_Value}当成要执行的可执行文件,自然找不到它,所以报错。

正确方案

方案1:用环境变量传递(推荐,适合给Python代码用的变量)

直接通过--set-env-vars参数注入环境变量,Python代码可以直接读取,不需要修改Dockerfile:

gcloud run deploy YOUR_SERVICE_NAME \
  --image YOUR_IMAGE_URL \
  --set-env-vars _arg1=your_target_value

在Python代码中通过os模块获取:

import os
arg1_value = os.getenv("_arg1")

方案2:用--args传递命令行参数(仅当需要给Uvicorn加参数时用)

如果确实要给Uvicorn命令添加参数,需要把完整的启动命令作为--args的内容,替换原来的CMD:

gcloud run deploy YOUR_SERVICE_NAME \
  --image YOUR_IMAGE_URL \
  --args="uvicorn src.api:app --host 0.0.0.0 --port \$PORT --arg1 your_value"

注意:这里用\$PORT防止本地shell解析该变量,让容器内部使用自身的PORT环境变量。

或者用逗号分隔参数的写法(避免shell转义问题):

gcloud run deploy YOUR_SERVICE_NAME \
  --image YOUR_IMAGE_URL \
  --args="uvicorn,src.api:app,--host,0.0.0.0,--port,\$PORT,--arg1,your_value"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:52:43