Skip to content
返回部署

部署到 Google Cloud Run

GCP serverless 容器,缩到零、按请求付费和自动 HTTPS。

平台进阶

为什么

Cloud Run serverless 运行任何容器 — 空闲缩到零,仅按请求付费。自动处理 HTTPS、自动扩缩和日志,是 GCP 上最简单的容器部署方式。

平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。

何时使用

无状态容器化 API、Web 应用和后台 worker 用 Cloud Run。有状态应用或 WebSocket 密集工作负载避免。

如何做

1. 构建镜像 — docker build -t gcr.io/PROJECT/app . 2. 推送 — docker push gcr.io/PROJECT/app 3. 部署 — gcloud run deploy app --image gcr.io/PROJECT/app --region us-central1 4. 允许未认证 — --allow-unauthenticated 用于公共 API 5. 环境变量 — --set-env-vars KEY=VALUE 6. 自动扩缩 — --min-instances 1 --max-instances 10 7. Cloud SQL — --add-cloudsql-instances 用于 Postgres/MySQL

示例

# 从源码部署(Cloud Build 自动构建) gcloud run deploy myapp --source . --region us-central1 --allow-unauthenticated --set-env-vars DATABASE_URL=postgres://... --min-instances 0 --max-instances 10 --memory 512Mi --cpu 1 # Dockerfile(任何容器可用) FROM node:20-alpine WORKDIR /app COPY . . RUN npm ci && npm run build EXPOSE 8080 CMD ["node", "dist/server.js"] # 须监听 $PORT

常见问题

  • ⚠容器不监听 PORT — Cloud Run 注入 PORT 环境变量,须绑定 0.0.0.0:$PORT
  • ⚠冷启动 5-10s — 首次请求拉取启动容器,设 --min-instances 1 避免
  • ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致

最佳实践

  • ✓延迟敏感 API 设 --min-instances 1 — 小成本消除冷启动
  • ✓简单部署用 --source . — Cloud Build 自动构建推送镜像
  • ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求

常见问题解答