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

NextJS从13.4.13升级至13.4.15后,Docker部署Cloud Run失败求助

解决NextJS 13.4.15+版本在Cloud Run部署的端口监听问题

问题背景

NextJS应用从13.4.13升级到13.4.19后,Cloud Run部署报错:

ERROR: (gcloud.run.services.update) Revision 'devrel-demos-00085-yaf' is not ready and cannot serve traffic. The user-provided container failed to start and listen on the port defined provided by the PORT=8080 environment variable. Logs for this revision might contain more information.

经测试,13.4.13可正常部署,13.4.15及以上版本失败,原因是NextJS 13.4.15版本中对next-server的IPv6支持优化导致默认监听地址变更,Cloud Run的健康检查无法访问容器服务。

解决方法

方法1:修改启动命令绑定IPv4地址

在项目的package.json中,修改start脚本,指定监听0.0.0.0(允许所有IPv4和IPv6地址访问):

{
  "scripts": {
    "start": "next start -H 0.0.0.0"
  }
}

方法2:通过Dockerfile设置环境变量

在Dockerfile中添加环境变量HOST=0.0.0.0,让NextJS启动时自动绑定该地址:

# 保留原有镜像构建步骤...
ENV HOST=0.0.0.0
CMD ["npm", "start"]

方法3:通过Cloud Run配置环境变量

无需修改代码或Dockerfile,直接在Cloud Run服务中设置环境变量:

  • 使用gcloud命令部署时添加:
gcloud run services update [你的服务名] --set-env-vars HOST=0.0.0.0
  • 或在Google Cloud控制台的Cloud Run服务设置页面,手动添加环境变量HOST=0.0.0.0

验证部署

修改完成后重新构建镜像并部署到Cloud Run,此时容器会监听0.0.0.0:8080,Cloud Run的健康检查可以正常访问,服务即可正常启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:42:36