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

GCP Cloud Run容器未监听8080端口问题排查求助

Cloud Run部署失败排查:容器未监听8080端口(本地运行正常)

我通过Cloud Build部署Cloud Run服务时失败,提示容器未监听8080端口,但本地运行该容器时可以正常访问8080端口,请求协助排查问题。

错误日志相关

日志过滤规则:

resource.type = "cloud_run_revision"
resource.labels.service_name = "icognition-api-scv"
resource.labels.location = "us-central1"
 severity>=DEFAULT

Cloud Build配置(cloudbuild.yaml)

steps:
- id: "Build Docker Image"
  name: 'gcr.io/cloud-builders/docker:latest'
  dir: '.'
  args: ['build', 
          '-t', 'us-central1-docker.pkg.dev/${PROJECT_ID}/icognition-api-artifact-registry/icognition-api-img',
          '.']

- id: "Push Docker Image To Artifact Registry"
  name: 'gcr.io/cloud-builders/docker:latest'
  args: ['push', '--all-tags', 'us-central1-docker.pkg.dev/${PROJECT_ID}/icognition-api-artifact-registry/icognition-api-img']

- id: "Deploy Cloud Run Service"
  name: 'gcr.io/cloud-builders/gcloud:latest'
  args: [
    'run', 'deploy', 'icognition-api-scv', 
    '--service-account' ,'sa-icognition-api-svc@${PROJECT_ID}.iam.gserviceaccount.com',
    '--allow-unauthenticated',
    '--memory', '512Mi',
    '--platform', 'managed',
    '--image', 'us-central1-docker.pkg.dev/${PROJECT_ID}/icognition-api-artifact-registry/icognition-api-img',
    '--port', '8080',
    '--timeout', '30',
    '--min-instances', '0',
    '--max-instances', '1',
    '--ingress', 'all',
    '--region', 'us-central1',
    '--set-secrets', 'DATABASE_URL=icog-db-stg-secret:latest',
    '--network' ,'default',
    '--subnet', 'default',
    '--vpc-egress', 'private-ranges-only'
    ]
timeout: 600s
options:
  logging: CLOUD_LOGGING_ONLY
  dynamic_substitutions: true

Dockerfile内容

# 
FROM python:3.12-slim

WORKDIR /app

# 安装依赖库
COPY requirements.txt ./
RUN pip install --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt

# 将应用复制到容器中
COPY ./app ./app

ENV HOST 0.0.0.0
EXPOSE 8080

# 启动应用
CMD uvicorn app.main:app --host 0.0.0.0 --port 8080

排查方向建议

  • 验证镜像一致性:拉取Artifact Registry中的镜像到本地运行,确认是否和本地测试的版本一致,是否能正常监听8080端口。
  • 排查VPC配置影响:部署时使用了--vpc-egress private-ranges-only,可能导致容器启动时无法访问外部依赖(如数据库、第三方服务),进而导致服务启动失败。可临时改为all-traffic测试是否能正常启动。
  • 查看容器启动日志:在Cloud Run控制台查看容器启动的详细日志,确认是否有应用启动报错(如依赖缺失、数据库连接失败等),这类问题会导致服务未正常监听端口。
  • 兼容Cloud Run环境变量:将启动命令中的端口改为环境变量形式--port ${PORT:-8080},确保和Cloud Run默认的PORT环境变量兼容。
  • 检查服务账号权限:确认部署用的服务账号是否有权限访问Secret Manager中的icog-db-stg-secret,如果无法获取数据库URL,会导致应用启动失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:10:39