mcpField
G
gcp-deploy

gcp-deploy

github.com/fwfutures云与 DevOps060 次安装7 周前更新
代码仓库

关于 gcp-deploy

gcp-deploy 是面向开发者的部署技能,用于将基于 Dockerfile 的应用发布到 Google Cloud Run。它涵盖构建、推送至 Artifact Registry、部署,以及通过 gcloud 命令或脚本进行配置。

主要功能

  1. 01将源代码部署到 Cloud Run
  2. 02使用 Cloud Build 构建
  3. 03推送镜像至 Artifact Registry
  4. 04配置资源与环境变量
  5. 05查看日志和服务信息

适用场景

  1. 01部署容器化应用
  2. 02设置环境变量或密钥
  3. 03调整区域、端口、内存或扩缩容
  4. 04排查构建及服务启动问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/fwfutures/skills --skill gcp-deploy

安装后在 Claude Code 中输入/gcp-deploy确认已加载。

附带文件scripts/deploy.sh

详细介绍

GCP Cloud Run 部署

只需一条命令,即可将源代码部署到 Cloud Run。需要:一个 GCP 项目、仓库根目录中有一个 Dockerfile,以及一个监听端口的应用(默认端口为 8080 / PORT 环境变量)。

快速部署

# 1. Auth (skip if already logged in)
gcloud auth login
gcloud config set project PROJECT_ID

# 2. Enable APIs (first time only)
gcloud services enable run.googleapis.com cloudbuild.googleapis.com artifactregistry.googleapis.com

# 3. Deploy
gcloud run deploy SERVICE_NAME \
  --source . \
  --region australia-southeast1 \
  --allow-unauthenticated

此命令会通过 Cloud Build 远程构建容器,将其推送到 Artifact Registry,部署到 Cloud Run,并返回一个公开的 HTTPS URL。再次运行同一命令即可重新部署。

部署脚本

将 scripts/deploy.sh 复制到项目根目录,即可通过一条命令完成部署:

chmod +x deploy.sh
./deploy.sh my-service

环境变量:GCP_REGION(默认值:australia-southeast1)、GCP_PROJECT(默认值:当前 gcloud 项目)。

常用标志

标志用途示例
--region部署区域australia-southeast1
--allow-unauthenticated公开访问
--port容器端口(非 8080 时)--port 3000
--set-env-vars环境变量--set-env-vars KEY=val,FOO=bar
--set-secretsSecret Manager 密钥--set-secrets ENV=SECRET:latest
--memory内存--memory 512Mi
--cpuCPU--cpu 1
--min-instances最小实例数(0 = 缩容至零)--min-instances 0
--max-instances最大实例数--max-instances 3
--timeout请求超时时间(最长 3600)--timeout 300

环境变量和密钥

内联环境变量:

gcloud run deploy SERVICE --source . --region REGION --allow-unauthenticated \
  --set-env-vars "DATABASE_URL=postgres://...,API_KEY=abc123"

Secret Manager(敏感值推荐使用):

# Create secret
echo -n "secret-value" | gcloud secrets create MY_SECRET --data-file=-

# Grant access to default compute SA
gcloud secrets add-iam-policy-binding MY_SECRET \
  --member="serviceAccount:$(gcloud iam service-accounts list --format='value(email)' --filter='displayName:Compute Engine default')" \
  --role="roles/secretmanager.secretAccessor"

# Deploy with secret
gcloud run deploy SERVICE --source . --region REGION --allow-unauthenticated \
  --set-secrets "MY_SECRET=MY_SECRET:latest"

实用命令

# Stream logs
gcloud run services logs tail SERVICE --region REGION

# List services
gcloud run services list --region REGION

# Get service URL
gcloud run services describe SERVICE --region REGION --format "value(status.url)"

# Delete service
gcloud run services delete SERVICE --region REGION

CI/无头身份验证

gcloud auth activate-service-account --key-file=key.json
gcloud config set project PROJECT_ID

故障排除

问题解决方法
构建失败在本地检查 Dockerfile:docker build .
部署时出现 403需要 roles/run.admin 和 roles/cloudbuild.builds.editor
应用启动时崩溃查看日志:gcloud run services logs tail SERVICE --region REGION
端口不匹配设置 --port 以匹配应用端口,或让应用读取 PORT 环境变量
冷启动缓慢设置 --min-instances 1(保持实例预热,成本更高)
长请求超时使用 --timeout 300 增加超时时间(最长 3600s)

评论

支持 Markdown