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 を使う場合:
brew install --cask gcloud-cliCLI で認証します。
gcloud auth login2. プロジェクトのセットアップ
プロジェクトを作成し、プロンプトで自動生成されたプロジェクト ID を受け入れます。
gcloud projects create --set-as-default --name="my app"再利用しやすいように、プロジェクト ID とプロジェクト番号の環境変数を作成します。gcloud projects list コマンドでプロジェクトが表示されるまで、約 30 秒かかる場合があります。
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 を確認します。
gcloud billing accounts list直前のコマンドで確認した請求先アカウントをプロジェクトに追加します。
gcloud billing projects link $PROJECT_ID \
--billing-account=[billing_account_id]必要な API を有効にします。
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.comCloud Build にアクセスできるよう、サービスアカウントの権限を更新します。
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member=serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
--role=roles/run.builder3. Hello World
「create-hono」コマンドでプロジェクトを開始し、nodejs を選択します。
npm create hono@latest my-appmy-app に移動して依存関係をインストールします。
cd my-app
npm isrc/index.ts のポートを 8080 に変更します。
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 にアクセスします。
npm run dev4. デプロイ
デプロイを開始し、対話形式の指示に従います(リージョンの選択など)。
gcloud run deploy my-app --source . --allow-unauthenticatedランタイムの変更
Deno や Bun のランタイム、またはカスタマイズした Node.js コンテナでデプロイするには、必要な環境を定義する Dockerfile と、任意で .dockerignore を追加します。
コンテナ化については、次を参照してください。