云计算与部署云部署决策

云部署决策

先确认 Bun 在目标平台扮演运行时、构建工具还是包管理器

最后更新于

先回答一个问题

“平台支持 Bun”可能只表示它能执行 bun install,不等于线上请求由 Bun 运行。部署前先确认构建环境请求运行时分别是什么。

目标平台Bun 的实际角色推荐入口关键边界
Docker / Cloud Run / ECS / Kubernetes容器内真实运行时bun run src/index.ts监听平台端口,处理信号、探针和资源限制
AWS Lambda 容器Bun + Lambda Web Adapter容器镜像适配事件模型;官方示例使用 PORT=8080
Vercel FunctionsBun runtime(bunVersion支持的框架入口不支持 Bun.serve;Next.js 仍由 Turbopack/Webpack 打包
Cloudflare Workers包管理器/本地工具bunx wrangler deploy线上运行时是 workerd,不能假设存在 Bun.*
静态站点/CDN构建工具bun run build线上只托管产物,不运行 Bun 进程

不要用本地成功推断平台兼容

本地 bun run dev 成功,只证明本机工具链可用。部署验收必须在目标运行时检查启动、网络、文件系统、原生依赖、信号、超时和扩缩容行为。

选择路径

平台实操

平台无关的发布门禁

  1. 固定 Bun 版本或可控版本范围,并提交 bun.lock
  2. 使用 bun install --frozen-lockfile --production 构建生产依赖。
  3. 在与生产相同的镜像中运行类型检查、测试和冒烟测试。
  4. 以非 root 用户运行,保持根文件系统与本地状态可替换。
  5. 配置就绪、存活、启动探针,且不要共用一个含义模糊的 /health
  6. 从密钥服务注入凭据;不写入镜像、日志或 Agent 上下文。
  7. 验证 SIGTERM、滚动发布、失败回滚和数据库迁移顺序。

官方参考:Bun Docker guideBun deployment guidesCloudflare Wrangler