在 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)确认一切正常。