SuperAPI AI 工具集

bun-docker

部署与运维

查看项目

更新于 10-15 12:38

技能介绍

用途

bun-docker 用于指导在 Docker 容器中部署 Bun 应用,围绕官方 oven/bun 镜像给出可直接参考的 Dockerfile 与 Compose 配置示例,覆盖从本地开发到生产部署的常见容器化场景。

主要能力

  • 官方镜像与变体:列出 oven/bun 的 latest、slim、alpine、distroless、debian 等变体及大致体积(如 latest 约 100MB、slim 约 80MB、alpine 约 50MB、distroless 约 60MB、debian 约 100MB),并给出拉取命令。
  • 基础 Dockerfile:使用 oven/bun:1,复制 package.json 与 bun.lockb,执行 bun install --frozen-lockfile,暴露端口并运行 src/index.ts。
  • 多阶段生产构建:builder 阶段安装依赖并执行 bun run build,production 阶段使用 oven/bun:1-slim,仅安装生产依赖,复制构建产物,以非 root 用户 bun 运行。
  • Alpine 镜像:基于 oven/bun:1-alpine,使用 apk 安装额外包(如 git)。
  • Distroless 镜像:builder 阶段用 bun build --compile 编译为独立可执行文件,运行阶段使用 gcr.io/distroless/base。
  • Docker Compose:提供应用与 PostgreSQL 服务的编排示例,包含端口、环境变量、依赖与数据卷。
  • 开发热重载:通过 docker-compose.dev.yml 挂载源码卷,使用 bun --hot run 实现热重载。
  • 编译二进制:将应用编译为独立二进制,运行在精简的 ubuntu:22.04 镜像中,以 nobody 用户运行。
  • SQLite 持久化:创建数据目录、声明 VOLUME,并通过 DATABASE_PATH 环境变量指定数据库路径。
  • 健康检查:使用 HEALTHCHECK 指令配合 /health 端点。
  • 环境变量:区分构建期 ARG 与运行期 ENV,并给出构建与运行时的传参命令。
  • 缓存优化:将依赖安装与源码构建分层,利用 Docker 层缓存。
  • 安全安装:建议阻止 post-install 脚本(Bun 默认禁用,可通过 trustedDependencies 放行特定包)、固定依赖版本、安装前审计(如 socket package score npm <pkg>),并提示可加载 dependency-upgrade 技能获取完整安全配置。
  • 安全最佳实践:非 root 用户运行、使用 --chown=bun:bun 复制文件、配合只读文件系统运行。
  • .dockerignore:给出应排除的目录与文件清单。
  • 常用命令与常见错误:列出构建、运行、交互式 shell、查看版本等命令,以及 bun.lockb 缺失、EACCES 权限、OOM、磁盘空间不足等错误的成因与修复方式。

使用方式

按文档提供的 Dockerfile 或 docker-compose 示例,将应用代码与 package.json、bun.lockb 放入构建上下文,执行 docker build 构建镜像,再用 docker run 或 docker compose 启动。开发环境可挂载源码卷并使用 bun --hot。生产环境建议采用多阶段构建、非 root 用户与精简镜像。

适用场景

  • 将 Bun 应用容器化并部署到 Docker 环境。
  • 需要多阶段构建、镜像体积优化或层缓存优化的生产部署。
  • 使用 Docker Compose 编排应用与数据库。
  • 需要开发热重载、SQLite 持久化、健康检查或环境变量注入的场景。
  • 关注容器安全(非 root、只读文件系统、供应链安全)的部署。

限制

文档未提供具体版本兼容性矩阵、性能基准、收费或价格信息,也未说明所涉第三方工具(如 Socket CLI)的完整配置细节;相关完整安全配置需参考 dependency-upgrade 技能。部分示例(如 Kubernetes、优化)需加载对应 references 文件,本资料未展开其内容。