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

部署API至Cloud Run遇端口监听失败问题求助

问题排查与解决方案

1. 修复index.js的模块引用路径错误

你的index.js位于src目录下,当前引用路径../src/config/config会跳出src目录,导致无法找到配置文件,最终Express服务无法启动,自然不会监听端口。

修改index.js中的引用代码:

// 原错误路径
const api = require("../src/config/config");

// 修改为正确路径
const api = require("./config/config");

2. 确认env-cmd已加入生产依赖

你的Dockerfile使用npm install --omit=dev,如果env-cmd被标记为devDependencies,容器内将无法找到该工具,导致npm run execute执行失败。

  • 打开package.json,将env-cmd从devDependencies移至dependencies:
"dependencies": {
  "env-cmd": "^10.1.0", // 替换为你使用的实际版本号
  // 其他生产依赖...
}
  • 重新构建镜像,确保依赖安装完整。

3. 本地运行容器验证服务启动

部署前先本地启动容器,排查服务是否能正常运行:

  1. 构建本地镜像:
docker build -t local-api .
  1. 运行容器并映射端口:
docker run -p 8080:8080 local-api
  1. 查看容器日志,确认是否输出Puerto => 8080和Rest API started succesfully。如果有报错(如模块找不到),根据日志进一步修复。

4. 调整环境变量优先级(可选)

Cloud Run会自动注入PORT环境变量,建议移除.env.dev中的PORT=8080配置,让应用优先使用Cloud Run提供的端口(部署时--port 8080参数会与Cloud Run的PORT变量保持一致),避免本地配置干扰生产环境。

5. 验证Dockerfile的文件复制逻辑

确保本地项目结构与容器内结构匹配,你的Dockerfile中COPY . .会将本地项目根目录的所有文件复制到容器的/src工作目录,最终容器内的正确结构应为:

/src
├─ package.json
├─ src
│  ├─ index.js
│  ├─ config
│  │  └─ config.js
│  └─ routes
│     └─ start.routes.js
└─ ...

如果本地目录结构不符,需调整COPY命令或工作目录设置。


内容的提问来源于stack exchange,提问作者Eliana Chávez Valencia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:56:07