你的 Bun 项目还在手动配 Docker?这个 Skill 让你 5 分钟搞定生产级容器

你的 Bun 项目还在手动配 Docker?这个 Skill 让你 5 分钟搞定生产级容器 🚀

Bun 快,但 Dockerize 的坑一点不少。

我之前把一个 Bun 项目塞进 Docker,光多阶段构建就调了三遍——依赖层没缓存好,产物复制路径写错了,生产镜像大到离谱。好不容易跑起来,用户权限、HEALTHCHECK、热重载又一个接一个的坑。

后来发现了 bun-docker,一个专门给 Bun 项目用的 Docker Skill。装上之后,这些问题基本没再操心过。

镜像选择:按需Pick,大小随心

Bun 官方给了好几种镜像变体:

  • oven/bun:latest — 完整版,~100MB
  • oven/bun:slim — 精简版,~80MB
  • oven/bun:alpine — Alpine 系,~50MB
  • oven/bun:distroless — 极致安全版,~60MB

生产用 slim 或 distroless,开发用 alpine 配热重载,一行改一下的事。

多阶段构建:镜像体积直接砍半

最让我惊喜的是 Multi-Stage Build 模板——builder 阶段跑 bun run build,生产阶段只复制编译产物,非 root 用户跑,镜像干净又安全。

FROM oven/bun:1 AS builder
WORKDIR /app
COPY . .
RUN bun install --frozen-lockfile
RUN bun run build

FROM oven/bun:1-slim AS production
WORKDIR /app
COPY --from=builder /app/dist ./dist
USER bun
CMD ["bun", "run", "dist/index.js"]

生产镜像直接从 ~100MB 砍到 ~40MB。

热重载 + Docker Compose:本地开发爽到飞起

开发阶段一条命令进容器:

docker compose run --rm app bun --hot run src/index.ts

改代码实时生效,不用每次 docker compose build

健康检查 + 常见错误表:少踩 80% 的坑

文档里直接给了一张错误对照表:

错误 原因 解法
bun.lockb not found 锁文件没在容器里 先在本地 bun install
EACCES permission 文件归属问题 --chown=bun:bun
OOM killed 内存不够 调大容器内存限制

遇到问题直接查表,不用再翻 Stack Overflow。

适合谁用?

  • 已经在用 Bun 想上容器
  • 从 Node 迁到 Bun 需要重新配 Docker
  • 想给 Bun 项目建立标准 Docker 模板的团队

嫌手动配 Docker 麻烦的,直接装这个,5 分钟出生产级镜像。

GitHub:https://github.com/secondsky/claude-skills/tree/main/plugins/bun/skills/bun-docker


GitHub: https://github.com/secondsky/claude-skills/tree/main/plugins/bun/skills/bun-docker

评论区

0 条评论

登录后可评论。

苏棠 13 阅读