
Cloud Run:任意容器,全托管
空闲时缩放到零,数秒内可扩展到 1000 多个实例。

从源代码部署
gcloud run deploy my-api \
--source . \
--region us-central1 \
--allow-unauthenticated \
--memory 512Mi \
--min-instances 0 \
--max-instances 100 \
--concurrency 80

优化的多阶段 Dockerfile
FROM node:20-alpine AS deps
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
FROM node:20-alpine AS build
WORKDIR /app
COPY package*.json tsconfig.json ./
RUN npm ci
COPY src/ ./src/
RUN npm run build
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production PORT=8080
RUN addgroup -S app && adduser -S app -G app
COPY --from=deps /app/node_modules ./node_modules
COPY --from=build /app/dist ./dist
USER app
EXPOSE 8080
CMD ["node", "dist/main.js"]

安全部署的流量拆分
# 部署但不分配流量
gcloud run deploy my-api --image gcr.io/project/v2 --no-traffic
# 金丝雀发布:10% 到新版本
gcloud run services update-traffic my-api --to-revisions=my-api-v2=10,my-api-v1=90
# 全量发布
gcloud run services update-traffic my-api --to-latest
最小实例数
gcloud run services update my-api --min-instances 2
# 每个实例约 $0.10/天——防止关键服务的冷启动
-> 使用 Base64 转换器 对密钥进行编码。