Google Cloud Run は、サーバーレスアプリケーションをデプロイおよびスケーリングするためのマネージドプラットフォームです。Google がインフラストラクチャを処理します。
このガイドでは、Dockerfile を使用して Bun HTTP サーバーを Google Cloud Run にデプロイします。
NOTE
続行する前に、以下が準備されていることを確認してください。- デプロイ準備が整った Bun アプリケーション
- 請求情報が有効な Google Cloud アカウント
- インストールおよび設定済みの Google Cloud CLI
gcloud を初期化してプロジェクトを選択/作成する
Google Cloud CLI が初期化されていることを確認します。このコマンドはログインし、既存のプロジェクトの選択または新しいプロジェクトの作成を促します。
Google Cloud CLI の詳細については、公式ドキュメント を参照してください。
gcloud initWelcome! This command will take you through the configuration of gcloud.
You must sign in to continue. Would you like to sign in (Y/n)? Y
You are signed in as [email@example.com].
Pick cloud project to use:
[1] existing-bun-app-1234
[2] Enter a project ID
[3] Create a new project
Please enter numeric choice or text value (must exactly match list item): 3
Enter a Project ID. my-bun-app
Your current project has been set to: [my-bun-app]
The Google Cloud CLI is configured and ready to use!(オプション) プロジェクト情報を環境変数に保存する
プロジェクト ID と番号を変数に設定して、次のステップで簡単に再利用できるようにします。
PROJECT_ID=$(gcloud projects list --format='value(projectId)' --filter='name="my bun app"')
PROJECT_NUMBER=$(gcloud projects list --format='value(projectNumber)' --filter='name="my bun app"')
echo $PROJECT_ID $PROJECT_NUMBERmy-bun-app-... [PROJECT_NUMBER]請求サービスアカウントをリンクする
利用可能な請求アカウントを一覧表示し、プロジェクトにリンクします。
gcloud billing accounts listACCOUNT_ID NAME OPEN MASTER_ACCOUNT_ID
[BILLING_ACCOUNT_ID] My Billing Account True請求アカウントをプロジェクトにリンクします。[BILLING_ACCOUNT_ID] を請求アカウントの ID に置き換えます。
gcloud billing projects link $PROJECT_ID --billing-account=[BILLING_ACCOUNT_ID]billingAccountName: billingAccounts/[BILLING_ACCOUNT_ID]
billingEnabled: true
name: projects/my-bun-app-.../billingInfo
projectId: my-bun-app-...API を有効にして IAM ロールを設定する
必要なサービスを有効にし、Cloud Build の権限を付与します。
gcloud services enable run.googleapis.com cloudbuild.googleapis.com
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member=serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
--role=roles/run.builderNOTE
これらのコマンドは、Cloud Run(`run.googleapis.com`)と Cloud Build(`cloudbuild.googleapis.com`)を有効にします。これらはソースからのデプロイに必要です。Cloud Run はコンテナ化されたアプリを実行し、Cloud Build はビルドとパッケージングを処理します。IAM バインディングは、Compute Engine サービスアカウント($PROJECT_NUMBER-compute@developer.gserviceaccount.com)に、イメージのビルドとデプロイの権限を付与します。
Dockerfile を追加する
プロジェクトのルートに新しい Dockerfile を作成します。このファイルには、コンテナの初期化、ローカルプロジェクトファイルのコピー、依存関係のインストール、アプリケーションの起動に関する指示が含まれています。
# アプリケーションを実行するために公式の Bun イメージを使用
FROM oven/bun:latest
# package.json と bun.lock をコンテナにコピー
COPY package.json bun.lock ./
# 依存関係をインストール
RUN bun install --production --frozen-lockfile
# アプリケーションの残りをコンテナにコピー
COPY . .
# アプリケーションを実行
CMD ["bun", "index.ts"]NOTE
スタートコマンドがアプリケーションのエントリポイントに対応していることを確認してください。`package.json` にスタートスクリプトがある場合は、`CMD ["bun", "run", "start"]` にすることもできます。このイメージは依存関係をインストールし、コンテナ内で Bun を使用してアプリを実行します。アプリに依存関係がない場合は、RUN bun install --production --frozen-lockfile 行を省略できます。
プロジェクトのルートに新しい .dockerignore ファイルを作成します。このファイルには、node_modules など、コンテナイメージから 除外 する必要があるファイルとディレクトリが含まれています。これにより、ビルドが高速化され、サイズが小さくなります。
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# 除外するその他のファイルやディレクトリサービスをデプロイする
Dockerfile を含むディレクトリにいることを確認し、ローカルソースから直接デプロイします。
NOTE
希望するリージョンに `--region` フラグを更新してください。このフラグを省略して、リージョンを選択するインタラクティブプロンプトを表示することもできます。gcloud run deploy my-bun-app --source . --region=us-west1 --allow-unauthenticatedDeploying from source requires an Artifact Registry Docker repository to store built containers. A repository named
[cloud-run-source-deploy] in region [us-west1] will be created.
Do you want to continue (Y/n)? Y
Building using Dockerfile and deploying container to Cloud Run service [my-bun-app] in project [my-bun-app-...] region [us-west1]
✓ Building and deploying... Done.
✓ Validating Service...
✓ Uploading sources...
✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds...].
✓ Creating Revision...
✓ Routing traffic...
✓ Setting IAM Policy...
Done.
Service [my-bun-app] revision [my-bun-app-...] has been deployed and is serving 100 percent of traffic.
Service URL: https://my-bun-app-....us-west1.run.appライブアプリケーションにアクセスする
🎉 Bun アプリケーションが稼働しました!
サービス URL(https://my-bun-app-....us-west1.run.app)にアクセスして、すべてが期待通りに動作することを確認します。