執行環境套件管理器打包器測試執行器程式碼檢查格式化指南參考部落格意見回饋

在 Google Cloud Run 上部署 Bun 應用

Google Cloud Run 是一個託管平臺,用於部署和擴充套件無伺服器應用。Google 會為您管理基礎設施。

本指南使用 Dockerfile 將 Bun HTTP 伺服器部署到 Google Cloud Run。


  1. 通過選擇或建立專案來初始化 gcloud

    請確保您已經初始化 Google Cloud CLI。gcloud init 會讓您登入,並提示您選擇現有專案或建立新專案。

    有關 Google Cloud CLI 的更多幫助,請參見 官方文件。

    terminal
    gcloud init
    
    Text
    歡迎!該命令將引導您完成 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 已設定並準備使用!
    
  2. (可選)將專案資訊儲存在環境變數中

    為專案 ID 和專案編號設定變數,以便在以下步驟中重複使用。

    terminal
    PROJECT_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_NUMBER
    
    Text
    my-bun-app [PROJECT_NUMBER]
    
  3. 關聯計費賬戶

    列出可用的計費賬戶,並把一個賬戶關聯到您的專案:

    terminal
    gcloud billing accounts list
    
    Text
    ACCOUNT_ID            NAME                OPEN  MASTER_ACCOUNT_ID
    [BILLING_ACCOUNT_ID]  我的計費賬戶         True
    

    將計費賬戶關聯到專案。將 [BILLING_ACCOUNT_ID] 替換為您的計費賬戶 ID。

    terminal
    gcloud billing projects link $PROJECT_ID --billing-account=[BILLING_ACCOUNT_ID]
    
    Text
    billingAccountName: billingAccounts/[BILLING_ACCOUNT_ID]
    billingEnabled: true
    name: projects/my-bun-app/billingInfo
    projectId: my-bun-app
    
  4. 啟用 API 並設定 IAM 角色

    啟用所需服務並授予 Cloud Build 許可權:

    terminal
    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
    
  5. 新增 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。排除這些內容可以讓建置更快、映象更小:

    .dockerignore
    node_modules
    Dockerfile*
    .dockerignore
    .git
    .gitignore
    README.md
    LICENSE
    .vscode
    .env
    # 其他想排除的檔案或目錄
    
  6. 部署服務

    確保您處在包含 Dockerfile 的目錄中,然後直接從本地原始碼部署:

    terminal
    gcloud run deploy my-bun-app --source . --region=us-west1 --allow-unauthenticated
    
    Text
    從原始碼部署需要一個 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
    
  7. 訪問您的線上應用

    您的 Bun 應用現已上線。

    訪問服務 URL(https://my-bun-app-....us-west1.run.app)確認一切正常。