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

如何在GCP Cloud Build的cloudbuild.yaml中正确传递CLI部署参数

问题原因

你遇到的错误是因为Cloud Run部署时,--args参数里的"-c dev_config api"被当成了单个完整的可执行文件名,而不是拆分后传递给ENTRYPOINT ["./quivr"]的参数。系统会尝试寻找名为quivr -c dev_config api的文件,自然找不到。

解决方案

修改cloudbuild.yaml中Cloud Run部署步骤的args配置,把每个CLI参数单独拆分成数组元素,而不是放在同一个字符串里:

steps:
  # Build the container image
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-f', 'dev.Dockerfile', '-t', 'gcr.io/quivr-test/quivr-api', '.']
  # Push the container image to Container Registry
  - name: 'gcr.io/cloud-builders/docker'
    args: ['push', 'gcr.io/quivr-test/quivr-api']
  # Deploy container image to Cloud Run
  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
    entrypoint: gcloud
    args: [
      'run', 'deploy', 'quivr-api',
      '--image', 'gcr.io/quivr-test/quivr-api',
      '--region', 'us-central1',
      '--platform', 'managed',
      '--args', '-c', 'dev_config', 'api'  # 拆分每个参数为独立数组项
    ]
images:
  - 'gcr.io/quivr-test/quivr-api'
为什么本地运行正常?

本地docker run命令中,-c dev_config api是直接跟在镜像名后面的参数,Docker会自动将这些参数拆分后传递给镜像的ENTRYPOINT。但Cloud Run的--args要求每个参数必须作为独立的数组项,不能合并成一个字符串,否则会被识别为单个可执行文件路径。

这样修改后,Cloud Run会正确将-c、dev_config、api作为参数传递给./quivr,和你本地运行的效果一致,同时也支持后续修改不同的CLI选项。

内容的提问来源于stack exchange,提问作者Z. Fralish

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:52:24