本文へ移動

Google Cloud Run ​

Google Cloud Run は Google Cloud が提供するサーバーレスプラットフォームです。イベントに応じてコードを実行でき、基盤となるコンピューティングリソースは Google が自動的に管理します。

Google Cloud Run はコンテナでサービスを実行します。Dockerfile を用意すれば、Deno や Bun など、任意のランタイムを使えます。Dockerfile がない場合は、デフォルトの Node.js buildpack が使われます。

このガイドでは、Google Cloud アカウントと請求先アカウントをすでに持っていることを前提とします。

1. CLI のインストール ​

Google Cloud Platform を扱うには、gcloud CLI を使うのが簡単です。

たとえば、macOS で Homebrew を使う場合:

sh
brew install --cask gcloud-cli

CLI で認証します。

sh
gcloud auth login

2. プロジェクトのセットアップ ​

プロジェクトを作成し、プロンプトで自動生成されたプロジェクト ID を受け入れます。

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

再利用しやすいように、プロジェクト ID とプロジェクト番号の環境変数を作成します。gcloud projects list コマンドでプロジェクトが表示されるまで、約 30 秒かかる場合があります。

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}`)
})

開発サーバーをローカルで起動し、Web ブラウザーで http://localhost:8080 にアクセスします。

sh
npm run dev

4. デプロイ ​

デプロイを開始し、対話形式の指示に従います(リージョンの選択など)。

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

ランタイムの変更 ​

Deno や Bun のランタイム、またはカスタマイズした Node.js コンテナでデプロイするには、必要な環境を定義する Dockerfile と、任意で .dockerignore を追加します。

コンテナ化については、次を参照してください。

MIT ライセンスで公開されています。