在 Google Cloud Run 上部署 Bun 應用
Google Cloud Run 是一個託管平臺,用於部署和擴充套件無伺服器應用。Google 會為您管理基礎設施。
本指南使用 Dockerfile 將 Bun HTTP 伺服器部署到 Google Cloud Run。
- 通過選擇或建立專案來初始化
gcloud請確保您已經初始化 Google Cloud CLI。
gcloud init會讓您登入,並提示您選擇現有專案或建立新專案。有關 Google Cloud CLI 的更多幫助,請參見 官方文件。
terminalgcloud initText歡迎!該命令將引導您完成 gcloud 的設定。 您必須登入才能繼續。您是否要登入 (Y/n)? Y 您已登入為 [email@example.com]。 請選擇要使用的雲專案: [1] existing-bun-app-1234 [2] 輸入專案 ID [3] 建立新專案 請輸入數字選擇或文本值(必須與列表項完全匹配):3 請輸入專案 ID。my-bun-app 您當前的專案已設定為:[my-bun-app] Google Cloud CLI 已設定並準備使用! - (可選)將專案資訊儲存在環境變數中
為專案 ID 和專案編號設定變數,以便在以下步驟中重複使用。
terminalPROJECT_ID=$(gcloud projects list --format='value(projectId)' --filter='projectId=my-bun-app') PROJECT_NUMBER=$(gcloud projects list --format='value(projectNumber)' --filter='projectId=my-bun-app') echo $PROJECT_ID $PROJECT_NUMBERTextmy-bun-app [PROJECT_NUMBER] - 關聯計費賬戶
列出可用的計費賬戶,並把一個賬戶關聯到您的專案:
terminalgcloud billing accounts listTextACCOUNT_ID NAME OPEN MASTER_ACCOUNT_ID [BILLING_ACCOUNT_ID] 我的計費賬戶 True將計費賬戶關聯到專案。將
[BILLING_ACCOUNT_ID]替換為您的計費賬戶 ID。terminalgcloud billing projects link $PROJECT_ID --billing-account=[BILLING_ACCOUNT_ID]TextbillingAccountName: billingAccounts/[BILLING_ACCOUNT_ID] billingEnabled: true name: projects/my-bun-app/billingInfo projectId: my-bun-app - 啟用 API 並設定 IAM 角色
啟用所需服務並授予 Cloud Build 許可權:
terminalgcloud 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 - 新增 Dockerfile
在專案根目錄建立新的
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"]在專案根目錄建立新的
.dockerignore檔案。該檔案列出要從容器映象中_排除_的檔案和目錄,例如node_modules。排除這些內容可以讓建置更快、映象更小:.dockerignorenode_modules Dockerfile* .dockerignore .git .gitignore README.md LICENSE .vscode .env # 其他想排除的檔案或目錄 - 部署服務
確保您處在包含
Dockerfile的目錄中,然後直接從本地原始碼部署:terminalgcloud run deploy my-bun-app --source . --region=us-west1 --allow-unauthenticatedText從原始碼部署需要一個 Artifact Registry Docker 儲存庫來儲存建置後的容器。將會在區域 [us-west1] 建立名為 [cloud-run-source-deploy] 的儲存庫。 是否繼續 (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 configuration... ✓ 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)確認一切正常。