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

部署Node-TypeScript-Express应用至Cloud Run时端口监听失败求助

部署Node-TypeScript-Express应用到Cloud Run失败:容器未监听指定端口

尝试将容器化的Node-TypeScript-Express应用部署至Google Cloud Run时失败,收到错误提示:
The user-provided container failed to start and listen on the port defined provided by the PORT=8080


相关配置信息

Dockerfile配置

FROM node:18.13.0 as base

WORKDIR /home/node/app

COPY package*.json ./

RUN npm i

COPY . .

FROM base as production

ENV NODE_PATH=./dist

RUN npm run build

代码端口声明

const PORT = process.env.PORT || 8080;

package.json配置

{
  "name": "weather-service",
  "version": "0.0.0",
  "description": "small node server that fetches openweather api data",
  "engines": {
    "node": ">= 18.12 <19"
  },
  "scripts": {
    "start": "NODE_PATH=./dist node dist/src/index.js",
    "clean": "rimraf coverage dist tmp",
    "dev": "ts-node-dev -r tsconfig-paths/register src/index.ts",
    "prebuild": "npm run lint",
    "build": "ttsc -p tsconfig.release.json",
    "build:watch": "ttsc -w -p tsconfig.release.json",
    "build:release": "npm run clean && ttsc -p tsconfig.release.json",
    "test": "jest --coverage --detectOpenHandles --forceExit",
    "test:watch": "jest --watch --detectOpenHandles --forceExit",
    "lint": "eslint . --ext .ts --ext .mts && tsc",
    "lint:fix": "eslint . --ext .ts --ext .mts",
    "prettier": "prettier --config .prettierrc --write .",
    "prepare": "husky install",
    "pre-commit": "lint-staged"
  }
}

docker-compose系列配置

docker-compose.yml

version: '3.7'

services:
  weather-service:
    build:
      context: .
      dockerfile: Dockerfile
      target: base
    volumes:
      - ./src:/home/node/app/src
    container_name: weather-service
    expose:
      - '8080'
    ports:
      - '8080:8080'
    command: npm run dev

docker-compose.prod.yml

version: '3.7'

services:
  weather-service:
    build:
      target: production
    command: npm run start

docker-compose.dev.yml

version: '3.7'

services:
  weather-service:
    env_file:
      - .env
    environment:
      - ${PORT}
      - ${WEATHER_API_KEY}

Makefile配置

up:
    docker-compose -f docker-compose.yml -f docker-compose.dev.yml up

up-prod:
    docker-compose -f docker-compose.yml -f docker-compose.prod.yml up

down: 
    docker-compose down

build:
    docker-compose build

已尝试的排查操作

  • 曾在.env文件设置端口,后删除该配置(因Cloud Run会自动注入PORT环境变量)
  • 手动将代码端口设置为固定值
  • 指定非8080的其他端口进行部署
  • 通过本地docker-compose build构建镜像,打标签后上传至GCP容器仓库

目前问题仍未解决,怀疑该错误提示为通用报错,不确定是否真的是端口监听问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 10:40:37