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

Cloud Build使用两个Dockerfile复用中间镜像解决Cloud Run部署超时问题

适配需求的cloudbuild.yaml完整配置

steps:
# 1. 复制对应服务源码到工作目录
- name: 'bash'
  args:
    - '-c'
    - |
      echo 'Creating gcr_source directory for ${_GCR_NAME}'
      mkdir _gcr_source
      cp -r cloudruns/${_GCR_NAME}/. _gcr_source

# 2. 尝试拉取已有的prophet基础镜像,判断是否需要重新构建
- name: 'gcr.io/cloud-builders/docker'
  id: 'check-base-image'
  allowFailure: true
  args: ['pull', 'gcr.io/$PROJECT_ID/prophet-base:latest']
  dir: '_gcr_source'

# 3. 仅当基础镜像不存在时,构建并推送prophet基础镜像(对应Dockerfile_one)
- name: 'gcr.io/cloud-builders/docker'
  id: 'build-base-image'
  waitFor: ['check-base-image']
  entrypoint: 'bash'
  args:
    - '-c'
    - |
      # 上一步pull失败返回码非0时才执行构建
      if [ $? -ne 0 ]; then
        docker build -f Dockerfile.one -t gcr.io/$PROJECT_ID/prophet-base:latest .
        docker push gcr.io/$PROJECT_ID/prophet-base:latest
      fi
  dir: '_gcr_source'

# 4. 基于基础镜像构建最终业务镜像(对应Dockerfile_two)
- name: 'gcr.io/cloud-builders/docker'
  waitFor: ['build-base-image']
  args: ['build', '-f', 'Dockerfile.two', '-t', 'gcr.io/$PROJECT_ID/${_GCR_NAME}', '.']
  dir: '_gcr_source'

# 5. 推送最终业务镜像到镜像仓库
- name: 'gcr.io/cloud-builders/docker'
  args: ['push', 'gcr.io/$PROJECT_ID/${_GCR_NAME}']

# 6. 部署到Cloud Run
- name: 'gcr.io/cloud-builders/gcloud'
  entrypoint: gcloud
  args:
  - run
  - deploy
  - ${_GCR_NAME}
  - --image=gcr.io/$PROJECT_ID/${_GCR_NAME}
  # 可根据需要补充Cloud Run其他参数,如区域、内存限制、允许未授权访问等
  # - --region=us-central1
  # - --memory=2Gi
  # - --allow-unauthenticated

# 配置Cloud Build超时时间,避免基础镜像首次构建超时
timeout: 3600s
images:
- 'gcr.io/$PROJECT_ID/prophet-base:latest'
- 'gcr.io/$PROJECT_ID/${_GCR_NAME}'

配置说明

  • 基础镜像默认使用固定标签prophet-base:latest,如果需要多版本管理可自行修改标签规则
  • 你需要将拆分后的两个Dockerfile分别命名为Dockerfile.one和Dockerfile.two,存放到cloudruns/${_GCR_NAME}/目录下
  • 首次构建时会自动拉取基础镜像失败,触发基础镜像构建,后续构建只要基础镜像存在就会直接跳过构建步骤
  • 全局超时配置为1小时,避免Prophet首次编译依赖时间过长导致构建超时

注意事项

如果后续需要更新Prophet版本或者基础镜像的依赖,只需要手动删除GCR里的prophet-base:latest镜像,下次构建就会自动重新构建基础镜像。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:15:00