Skip to content

Google Cloud Run

Google Cloud Run 是 Google Cloud 提供的 Serverless 平台。你可以根据事件触发运行代码,底层计算资源由 Google 自动管理。

Cloud Run 使用容器运行服务,这意味着你可以通过提供 Dockerfile 来选择任意运行时(例如 Deno 或 Bun)。如果没有提供 Dockerfile,Cloud Run 会使用默认的 Node.js Buildpack。

本指南假设你已有 Google Cloud 账号和计费账号。

1. 安装 CLI

使用 gcloud CLI 能更高效地操作 Google Cloud 平台。

例如在 macOS 上,可通过 Homebrew 安装:

sh
brew install --cask google-cloud-sdk

安装完成后进行身份验证:

sh
gcloud auth login

2. 项目初始化

创建项目,并在提示时接受自动生成的项目 ID:

sh
gcloud projects create --set-as-default --name="my app"

为方便重复使用,可保存项目 ID 与项目编号。项目创建成功可能需要约 30 秒,请稍候再执行 gcloud projects list

sh
PROJECT_ID=$(gcloud projects list \
    --format='value(projectId)' \
    --filter='name="my app"')

PROJECT_NUMBER=$(gcloud projects list \
    --format='value(projectNumber)' \
    --filter='name="my app"')

echo $PROJECT_ID $PROJECT_NUMBER

查看计费账号 ID:

sh
gcloud billing accounts list

将计费账号与项目关联:

sh
gcloud billing projects link $PROJECT_ID \
    --billing-account=[billing_account_id]

启用所需的 API:

sh
gcloud services enable run.googleapis.com \
    cloudbuild.googleapis.com

为服务账号授予 Cloud Build 权限:

sh
gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member=serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
    --role=roles/run.builder

3. Hello World

通过 create-hono 初始化项目,选择 nodejs 模板:

sh
npm create hono@latest my-app

进入 my-app 并安装依赖:

sh
cd my-app
npm i

src/index.ts 中的端口改为 8080

ts
import { serve } from '@hono/node-server'
import { Hono } from 'hono'

const app = new Hono()

app.get('/', (c) => {
  return c.text('Hello Hono!')
})

serve({
  fetch: app.fetch,
  port: 3000
  port: 8080
}, (info) => {
  console.log(`Server is running on http://localhost:${info.port}`)
})

启动本地开发服务器,并在浏览器访问 http://localhost:8080

sh
npm run dev

4. 部署

执行以下命令启动部署,根据提示选择区域等信息:

sh
gcloud run deploy my-app --source . --allow-unauthenticated

更换运行时

如果希望使用 Deno、Bun 或自定义 Node.js 镜像,请在项目中添加 Dockerfile(可选配 .dockerignore),构建所需的运行环境。

有关容器化的更多信息可参考:

Released under the MIT License.