Skip to content

Google Cloud Run は、サーバーレスアプリケーションをデプロイおよびスケーリングするためのマネージドプラットフォームです。Google がインフラストラクチャを処理します。

このガイドでは、Dockerfile を使用して Bun HTTP サーバーを Google Cloud Run にデプロイします。

NOTE

続行する前に、以下が準備されていることを確認してください。

gcloud を初期化してプロジェクトを選択/作成する

Google Cloud CLI が初期化されていることを確認します。このコマンドはログインし、既存のプロジェクトの選択または新しいプロジェクトの作成を促します。

Google Cloud CLI の詳細については、公式ドキュメント を参照してください。

bash
gcloud init
txt
Welcome! 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 と番号を変数に設定して、次のステップで簡単に再利用できるようにします。

bash
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_NUMBER
txt
my-bun-app-... [PROJECT_NUMBER]

請求サービスアカウントをリンクする

利用可能な請求アカウントを一覧表示し、プロジェクトにリンクします。

bash
gcloud billing accounts list
txt
ACCOUNT_ID            NAME                OPEN  MASTER_ACCOUNT_ID
[BILLING_ACCOUNT_ID]  My Billing Account  True

請求アカウントをプロジェクトにリンクします。[BILLING_ACCOUNT_ID] を請求アカウントの ID に置き換えます。

bash
gcloud billing projects link $PROJECT_ID --billing-account=[BILLING_ACCOUNT_ID]
txt
billingAccountName: billingAccounts/[BILLING_ACCOUNT_ID]
billingEnabled: true
name: projects/my-bun-app-.../billingInfo
projectId: my-bun-app-...

API を有効にして IAM ロールを設定する

必要なサービスを有効にし、Cloud Build の権限を付与します。

bash
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.builder

NOTE

これらのコマンドは、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 を作成します。このファイルには、コンテナの初期化、ローカルプロジェクトファイルのコピー、依存関係のインストール、アプリケーションの起動に関する指示が含まれています。

docker
# アプリケーションを実行するために公式の 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 など、コンテナイメージから 除外 する必要があるファイルとディレクトリが含まれています。これにより、ビルドが高速化され、サイズが小さくなります。

docker
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# 除外するその他のファイルやディレクトリ

サービスをデプロイする

Dockerfile を含むディレクトリにいることを確認し、ローカルソースから直接デプロイします。

NOTE

希望するリージョンに `--region` フラグを更新してください。このフラグを省略して、リージョンを選択するインタラクティブプロンプトを表示することもできます。
bash
gcloud run deploy my-bun-app --source . --region=us-west1 --allow-unauthenticated
txt
Deploying 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)にアクセスして、すべてが期待通りに動作することを確認します。

Bun by www.bunjs.com.cn 編集