Google Cloud Run
Google Cloud Run は Google Cloud 上に構築されたサーバーレスプラットフォームです。 イベントに対してコードを実行でき、基盤となるコンピューティングリソースは Google が自動で管理します。
Google Cloud Run はサービスを実行するためにコンテナを使用します。 つまり、 Dockerfile を設定することで好きなランタイム (Deno や Bun 等) を使用できることを意味します。 Dockerfile が無かった場合、 Google Cloud Run はデフォルトの Node.js ビルドパックを使用します。
このガイドは、あなたがすでに Google Cloud アカウントと請求先アカウントを持っていることを前提にしています。
1. CLI をインストールする
Google Cloud Platform での作業は、 gcloud CLI を使用するのが最も簡単です。
例えば、 MacOS で Homebrew を使用するとき:
brew install --cask google-cloud-sdk
CLI で認証します。
gcloud auth login
2. プロジェクトをセットアップする
プロジェクトを作成します。 提案されるプロジェクト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.com
Cloud Build にアクセスできるように、サービスアカウントの権限を更新します。
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
を選択してください。
npm create hono@latest my-app
my-app
ディレクトリに移動し、依存関係をインストールします。
cd my-app
npm i
src/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 dev
4. デプロイ
コマンドでデプロイを開始し、対話形式のプロンプトに従って設定をします。 (例: リージョンの設定)
gcloud run deploy my-app --source . --allow-unauthenticated
ランタイムを変更する
Deno や Bun (または、カスタム Node.js コンテナ) を使用してデプロイを行いたい場合、 Dockerfile
(と、必要に応じて .dockerignore
) を使用したい環境に合わせて設定してください。
コンテナ化の詳細は以下のドキュメントを参照してください: