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

将基础Next.js应用部署至Google Cloud Run时遇部署异常

Next.js部署Cloud Run:构建完成但未部署的修复方案

问题核心

从你的触发器设置和现象来看,当前Cloud Build仅完成了Docker镜像构建,没有执行部署到Cloud Run的步骤,这就是应用URL显示占位文本的原因。你怀疑的cloudbuild.yaml缺失确实是关键——默认触发器只配置构建镜像时,不会自动触发部署动作。

具体修复步骤

1. 添加cloudbuild.yaml配置文件

在apps/next目录下创建cloudbuild.yaml,填入以下内容(替换[你的GCP项目ID]为实际项目ID):

steps:
  # 构建Docker镜像
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-t', 'gcr.io/[你的GCP项目ID]/maze-runner-next', '.']
  # 推送镜像到容器注册表
  - name: 'gcr.io/cloud-builders/docker'
    args: ['push', 'gcr.io/[你的GCP项目ID]/maze-runner-next']
  # 部署到Cloud Run
  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
    entrypoint: gcloud
    args:
      - 'run'
      - 'deploy'
      - 'maze-runner-next'
      - '--image'
      - 'gcr.io/[你的GCP项目ID]/maze-runner-next'
      - '--region'
      - 'us-central1'
      - '--platform'
      - 'managed'
      - '--allow-unauthenticated' # 公开访问需保留,私有服务请删除
images:
  - 'gcr.io/[你的GCP项目ID]/maze-runner-next'

2. 调整触发器配置

进入Cloud Build触发器设置,将“配置类型”从“Dockerfile”切换为“Cloud Build配置文件(yaml或json)”,并指定配置文件路径为apps/next/cloudbuild.yaml。

3. 确认Dockerfile启动命令

Next.js独立输出模式下,推荐直接启动server.js,修改Dockerfile的CMD:

CMD ["node", "server.js"]

同时确保package.json里的start命令为node server.js,避免启动逻辑冲突。

4. 检查服务账号权限

Cloud Build的服务账号(格式:[项目编号]@cloudbuild.gserviceaccount.com)需要以下权限:

  • Cloud Run Admin:负责部署服务
  • Storage Admin:负责推送镜像到容器注册表
    进入IAM页面,给该账号添加对应角色即可。

额外排查动作

  • 查看Cloud Build历史日志:确认部署步骤是否执行,有无报错信息
  • 检查Cloud Run服务修订版:如果没有新修订版生成,说明部署步骤未触发,需重新核对触发器和配置文件路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:03:17