后端与接口
在 Google Cloud Run 上部署服务…
需要把代码/容器部署到 Cloud Run 并区分服务、作业、工作池三种资源类型时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
在 Google Cloud Run 上特定
解决思路
- 启用 Cloud Run Admin API 和 Cloud Build API:gcloud services enable run.googleapis.com cloudbuild.googleapis.com --quiet
- 确保拥有所需角色:项目级 Cloud Run Admin(roles/run.admin)、Cloud Run Source Developer(roles/run.sourceDeveloper)、服务身份上的 Service Account User(roles/iam.serviceAccountUser)、项目级 Logs Viewer(roles/logging.viewer)
- 为 Cloud Build 服务账号授予 Cloud Run Builder 角色:gcloud projects add-iam-policy-binding PROJECT_ID --member=serviceAccount:SERVICE_ACCOUNT_EMAIL_ADDRESS --role=roles/run.builder --quiet
- 部署代码必须监听 0.0.0.0(不是 127.0.0.1)并使用注入的 $PORT 环境变量(默认 8080),否则启动会崩溃
- 用容器镜像部署服务:gcloud run deploy SERVICE_NAME --image IMAGE_URL --region us-central1 --allow-unauthenticated --quiet(服务名不超过 49 字符,区域内唯一;不传 --image 则尝试从源码部署)
- 从源码部署(带构建,默认):使用 Google Cloud buildpacks 和 Cloud Build 自动构建镜像;启用自动基础镜像更新时运行 gcloud run deploy SERVICE_NAME --source . --base-image BASE_IMAGE --automatic-updates --quiet(仅支持 Google Cloud buildpacks 基础镜像)
- 从源码部署(使用 Dockerfile):gcloud run deploy SERVICE_NAME --source . --quiet,Cloud Build 在云端执行 Dockerfile 并部署
- 从源码部署(不带构建,预览):gcloud beta run deploy SERVICE_NAME --source APPLICATION_PATH --no-build --base-image=BASE_IMAGE --command=COMMAND --args=ARG --quiet,绕过 Cloud Build 直接部署产物以加快速度
- 创建 Cloud Run 作业:gcloud run jobs create JOB_NAME --image IMAGE_URL OPTIONS --quiet,或使用 gcloud run jobs deploy JOB_NAME --image IMAGE_URL OPTIONS --quiet
- 作业可选参数:--tasks(≥1,默认 1,最大 10000,每个任务注入 CLOUD_RUN_TASK_INDEX 和 CLOUD_RUN_TASK_COUNT)、--max-retries(0-10,默认 3)、--task-timeout(如 "2s",默认 10 分钟,最大 168 小时,GPU 任务最大 1 小时)、--parallelism(最大并行任务数)、--execute-now(创建后立即执行)
- 执行已有作业:gcloud run jobs execute JOB_NAME --quiet;等待执行完成:gcloud run jobs execute JOB_NAME --wait --region=REGION --quiet
- 部署工作池(容器镜像):gcloud run worker-pools deploy WORKER_POOL_NAME --image IMAGE_URL --quiet(镜像可用 tag 或精确 digest 指定)
- 从源码部署工作池:gcloud run worker-pools deploy WORKER_POOL_NAME --source . --quiet,底层使用 Google Cloud buildpacks 和 Cloud Build 自动构建
- 容器镜像优先使用 Artifact Registry(Docker Hub 镜像最多缓存一小时);其他公共/私有仓库(JFrog Artifactory、Nexus、GitHub Container Registry)需通过 Artifact Registry 远程仓库接入;Docker Hub 仅建议用于 Docker Official Images 或 Docker Sponsored OSS 镜像,且建议通过 Artifact Registry 远程仓库部署以提高可用性
- 部署失败排查:IAM/权限错误查阅 references/iam-security.md;启动崩溃/健康检查失败立即用 gcloud logging read "resource.labels.service_name=SERVICE_NAME" --limit=20 获取日志定位运行时错误;Node/Python 原生依赖错误时,若使用 --no-build 则改用 --source .(Buildpacks)为 Linux 正确编译原生扩展
- 需要更多产品信息时查阅参考目录(core-concepts.md、cli-usage.md、client-library-usage.md、mcp-usage.md、iac-usage.md、iam-security.md、networking.md),或使用 Developer Knowledge MCP 服务器的 search_documents 工具
适用边界 · 注意事项
- 项目受组织策略限制禁止未认证调用时,不能直接公开访问已部署服务,需按「测试私有服务」方式访问
- 未启用 Cloud Run Admin API 和 Cloud Build API、或缺少所需 IAM 角色时无法部署
- 使用 --no-build 部署含原生扩展的 Node/Python 应用时可能失败,应改用 --source . 走 Buildpacks 构建