Skip to content

Google Cloud Run

Google Cloud Run 是由 Google Cloud 构建的无服务器平台。你可以运行代码来响应事件,Google 会自动为你管理底层计算资源。

¥Google Cloud Run is a serverless platform built by Google Cloud. You can run your code in response to events and Google automatically manages the underlying compute resources for you.

Google Cloud Run 使用容器来运行你的服务。这意味着你可以通过提供 Dockerfile 来使用任何你喜欢的运行时(例如,Deno 或 Bun)。如果未提供 Dockerfile,Google Cloud Run 将使用默认的 Nodejs 构建包。

¥Google Cloud Run uses containers to run your service. This means you can use any runtime you like (E.g., Deno or Bun) by providing a Dockerfile. If no Dockerfile is provided Google Cloud Run will use the default Nodejs buildpack.

本指南假设你已拥有 Google Cloud 账户和结算账户。

¥This guide assumes you already have a Google Cloud account and a billing account.

1. 安装 CLI

¥ Install the CLI

使用 Google Cloud Platform 时,最简单的方法是使用 gcloud CLI

¥When working with Google Cloud Platform it is easiest to work with the gcloud CLI.

例如,在 MacOS 上使用 Homebrew:

¥For example, on MacOS using Homebrew:

sh
brew install --cask google-cloud-sdk

使用 CLI 进行身份验证。

¥Authenticate with the CLI.

sh
gcloud auth login

2. 项目设置

¥ Project setup

创建一个项目。在提示符下接受自动生成的项目 ID。

¥Create a project. Accept the auto-generated project ID at the prompt.

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

为你的项目 ID 和项目编号创建环境变量,以便于重复使用。项目成功返回 gcloud projects list 命令可能需要大约 30 秒。

¥Create environment variables for your project ID and project number for easy reuse. It may take ~30 seconds before the project successfully returns with the gcloud projects list command.

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。

¥Find your billing account ID.

sh
gcloud billing accounts list

将上一个命令中的结算账户添加到项目中。

¥Add your billing account from the prior command to the project.

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

启用所需的 API。

¥Enable the required APIs.

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

更新服务账户权限以访问 Cloud Build。

¥Update the service account permissions to have access to 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

¥Start your project with "create-hono" command. Select nodejs.

sh
npm create hono@latest my-app

移至 my-app 并安装依赖。

¥Move to my-app and install the dependencies.

sh
cd my-app
npm i

src/index.ts 中的端口更新为 8080

¥Update the port in src/index.ts to be 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}`)
})

在本地运行开发服务器。然后,在你的 Web 浏览器中访问 http://localhost:8080

¥Run the development server locally. Then, access http://localhost:8080 in your Web browser.

sh
npm run dev

4. 部署

¥ Deploy

启动部署并按照交互式提示操作(例如,选择区域)。

¥Start the deployment and follow the interactive prompts (E.g., select a region).

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

更改运行时

¥Changing runtimes

如果你想使用 Deno 或 Bun 运行时(或自定义的 Nodejs 容器)进行部署,请添加一个包含你所需环境的 Dockerfile(以及可选的 .dockerignore)。

¥If you want to deploy using Deno or Bun runtimes (or a customised Nodejs container), add a Dockerfile (and optionally .dockerignore) with your desired environment.

有关容器化的信息,请参阅:

¥For information on containerizing please refer to:

Hono v4.8 中文网 - 粤ICP备13048890号