跳到主内容
智客 ZICQ

技能库 智客分类:运维与云 bun-docker

Bun Docker

用于多克与 Bun, Dockerfiles, 烤箱/箱图像,容器化,以及部署.

426 安装量

官方网址:skills.sh

技能介绍

先看中文介绍;官方 description 原文单独保留,不改写 SKILL.md。

做什么

用于多克与 Bun, Dockerfiles, 烤箱/箱图像,容器化,以及部署.

何时用

官方 description 未单独写出 Use when。按规范,代理会在用户任务与这段 description 的关键词匹配时激活本技能。

代理如何加载

按 Agent Skills 渐进披露:启动时只加载 name 与 description(约 100 token);任务匹配后才读入整份 SKILL.md 正文;scripts/、references/、assets/ 仅在需要时再读。 本文件正文结构:Bun Docker、Official Images、Latest stable、Specific version、Variants、Basic Dockerfile。

文件分析

文件分析:除 SKILL.md 外,正文引用了 references/optimization.md、references/kubernetes.md,属于带资源的技能包,这些文件按需再读。

官方 description(原文)

Use for Docker with Bun, Dockerfiles, oven/bun image, containerization, and deployments.

Bun DockerOfficial ImagesLatest stableSpecific versionVariantsBasic DockerfileInstall dependenciesCopy sourceRunMulti-Stage Build (Production)Build stageProduction stage

· 许可:MIT

来源分类:skills.sh agent-skill

SKILL.md 与 Agent 调用

官方规范 ↗
name
bun-docker
description
Use for Docker with Bun, Dockerfiles, oven/bun image, containerization, and deployments.
许可
MIT
  1. 发现技能客户端向 Agent 提供名称与描述目录。
  2. 匹配与调用用户指定或任务匹配后,载入 SKILL.md 指令。
  3. 按需加载按步骤读取参考文档、使用脚本与素材。
指令中引用的文件 · 2
  • references/optimization.md
  • references/kubernetes.md

以下路径提取自原文;文件是否齐全请以来源仓库中的完整目录为准。

具体调用语法与可用工具以目标 Agent 客户端为准。 查看调用机制说明 ↗

安装这个技能

Skills CLI ↗

先选择目标 Agent 和安装范围,保留技能包的附属文件,安装后检查客户端能否发现该技能。

该技能引用了附属文件,请从来源获取完整目录;仅复制 SKILL.md 可能缺少依赖。

交给 Agent 安装

复制安装指令给支持 Agent Skills 的代理,确认其中的目标目录与客户端匹配。

把 Agent Skill「bun-docker」安装到我的项目:SKILL.md 原文与官方 description 见 https://zicq.com/zh/skills/skl-e672eed9e5a8adec-Bun-Docker.html
请存为 .cursor/skills/bun-docker/SKILL.md 或 .claude/skills/bun-docker/SKILL.md,frontmatter 的 name 与 description 保持原样,不要改写。
该技能还带 scripts/、references/、assets/ 等文件,请从 https://github.com/secondsky/claude-skills 取完整目录,不要只建一个 SKILL.md。

GitHub 完整包 ↗

终端安装 · Skills CLI

需要 Node.js 与 npx。先查看仓库技能列表,确认实际名称。

npx skills add 'https://github.com/secondsky/claude-skills' --list

npx skills add 'https://github.com/secondsky/claude-skills' --skill 'bun-docker'

CLI 会交互选择目标 Agent,默认安装到项目;用户级安装使用 -g。先通过查看命令核对仓库内容,再用 npx skills list 检查已安装技能。

阅读排版
--- name: bun-docker description: Use for Docker with Bun, Dockerfiles, oven/bun image, containerization, and deployments. metadata: version: "1.0.0" license: MIT --- # Bun Docker Deploy Bun applications in Docker containers using official images. ## Official Images ```bash # Latest stable docker pull oven/bun # Specific version docker pull oven/bun:1 # Variants oven/bun:latest # Full image (~100MB) oven/bun:slim # Minimal image (~80MB) oven/bun:alpine # Alpine-based (~50MB) oven/bun:distroless # Distroless (~60MB) oven/bun:debian # Debian-based (~100MB) ``` ## Basic Dockerfile ```dockerfile FROM oven/bun:1 AS base WORKDIR /app # Install dependencies COPY package.json bun.lockb ./ RUN bun install --frozen-lockfile # Copy source COPY . . # Run EXPOSE 3000 CMD ["bun", "run", "src/index.ts"] ``` ## Multi-Stage Build (Production) ```dockerfile # Build stage FROM oven/bun:1 AS builder WORKDIR /app COPY package.json bun.lockb ./ RUN bun install --frozen-lockfile COPY . . RUN bun run build # Production stage FROM oven/bun:1-slim AS production WORKDIR /app # Copy only production dependencies COPY package.json bun.lockb ./ RUN bun install --frozen-lockfile --production # Copy built assets COPY --from=builder /app/dist ./dist # Run as non-root USER bun EXPOSE 3000 CMD ["bun", "run", "dist/index.js"] ``` ## Alpine Image ```dockerfile FROM oven/bun:1-alpine WORKDIR /app # Alpine uses apk for packages RUN apk add --no-cache git COPY package.json bun.lockb ./ RUN bun install --frozen-lockfile COPY . . CMD ["bun", "run", "src/index.ts"] ``` ## Distroless Image ```dockerfile # Build stage FROM oven/bun:1 AS builder WORKDIR /app COPY . . RUN bun install --frozen-lockfile RUN bun build src/index.ts --compile --outfile=app # Runtime stage FROM gcr.io/distroless/base COPY --from=builder /app/app /app ENTRYPOINT ["/app"] ``` ## Docker Compose ```yaml # docker-compose.yml version: "3.8" services: app: build: . ports: - "3000:3000" environment: - NODE_ENV=production - DATABASE_URL=postgres://db:5432/app depends_on: - db restart: unless-stopped db: image: postgres:16-alpine environment: POSTGRES_DB: app POSTGRES_USER: user POSTGRES_PASSWORD: password volumes: - postgres_data:/var/lib/postgresql/data volumes: postgres_data: ``` ## Hot Reload in Development ```yaml # docker-compose.dev.yml version: "3.8" services: app: build: context: . dockerfile: Dockerfile.dev ports: - "3000:3000" volumes: - ./src:/app/src - ./package.json:/app/package.json command: bun --hot run src/index.ts ``` ```dockerfile # Dockerfile.dev FROM oven/bun:1 WORKDIR /app COPY package.json bun.lockb ./ RUN bun install # Source mounted as volume CMD ["bun", "--hot", "run", "src/index.ts"] ``` ## Compiled Binary ```dockerfile FROM oven/bun:1 AS builder WORKDIR /app COPY . . RUN bun install --frozen-lockfile RUN bun build src/index.ts --compile --outfile=server # Minimal runtime FROM ubuntu:22.04 # Install runtime dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ && rm -rf /var/lib/apt/lists/* COPY --from=builder /app/server /usr/local/bin/server USER nobody EXPOSE 3000 CMD ["server"] ``` ## SQLite with Docker ```dockerfile FROM oven/bun:1 WORKDIR /app COPY package.json bun.lockb ./ RUN bun install --frozen-lockfile COPY . . # Create data directory RUN mkdir -p /app/data # Volume for SQLite database VOLUME /app/data ENV DATABASE_PATH=/app/data/app.sqlite CMD ["bun", "run", "src/index.ts"] ``` ## Health Checks ```dockerfile FROM oven/bun:1 WORKDIR /app COPY . . RUN bun install --frozen-lockfile EXPOSE 3000 HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ CMD curl -f http://localhost:3000/health || exit 1 CMD ["bun", "run", "src/index.ts"] ``` ```typescript // Health endpoint app.get("/health", (c) => c.json({ status: "ok" })); ``` ## Environment Variables ```dockerfile FROM oven/bun:1 WORKDIR /app # Build-time args ARG NODE_ENV=production ARG API_URL # Runtime env ENV NODE_ENV=${NODE_ENV} ENV API_URL=${API_URL} COPY . . RUN bun install --frozen-lockfile CMD ["bun", "run", "src/index.ts"] ``` ```bash # Build with args docker build --build-arg API_URL=https://api.example.com -t myapp . # Run with env docker run -e DATABASE_URL=postgres://... myapp ``` ## Caching Optimization ```dockerfile FROM oven/bun:1 AS base WORKDIR /app # Cache dependencies separately FROM base AS deps COPY package.json bun.lockb ./ RUN bun install --frozen-lockfile # Build FROM deps AS builder COPY . . RUN bun run build # Production FROM base AS runner COPY --from=deps /app/node_modules ./node_modules COPY --from=builder /app/dist ./dist COPY package.json ./ USER bun CMD ["bun", "run", "dist/index.js"] ``` ## Secure Installation When installing packages in Docker builds, follow supply chain security best practices: - **Block post-install scripts** — Bun disables them by default; allow specific packages via `trustedDependencies` - **Pin dependency versions** — Use exact versions in `package.json` for reproducible builds - **Audit before installing** — Run `socket package score npm ` to check packages before they reach your image Load the `dependency-upgrade` skill for full security configuration including Socket CLI integration, cooldown setup, lockfile validation, and CI enforcement. ## Security Best Practices ```dockerfile FROM oven/bun:1-slim WORKDIR /app # Don't run as root USER bun # Copy with correct ownership COPY --chown=bun:bun package.json bun.lockb ./ RUN bun install --frozen-lockfile --production COPY --chown=bun:bun . . # Read-only filesystem # (use with: docker run --read-only) EXPOSE 3000 CMD ["bun", "run", "src/index.ts"] ``` ## .dockerignore ``` node_modules .git .gitignore *.md Dockerfile* docker-compose* .env* .DS_Store coverage dist .bun ``` ## Common Commands ```bash # Build docker build -t myapp . # Run docker run -p 3000:3000 myapp # Run with env file docker run --env-file .env -p 3000:3000 myapp # Interactive shell docker run -it oven/bun sh # Check Bun version docker run oven/bun bun --version ``` ## Common Errors | Error | Cause | Fix | |-------|-------|-----| | `bun.lockb not found` | Missing lockfile | Run `bun install` locally | | `EACCES permission` | File ownership | Use `--chown=bun:bun` | | `OOM killed` | Memory limit | Increase container memory | | `No space left` | Large layers | Use multi-stage builds | ## When to Load References Load `references/optimization.md` when: - Image size reduction - Layer caching - Build performance Load `references/kubernetes.md` when: - K8s deployment - Horizontal scaling - Service mesh

相关技能

运维与云

Docker Essentials

用于容器管理,图像操作,调试的基本道克命令和工作流程.

运维与云

Find Skills

从开放的代理技能生态系统中发现并安装技能. 使用时:(1)用户问"我如何做X",X可能拥有现有技能,(2)用户说"为X找到技能"或"是否为X有技能",(3)用户问"你能否做X",X是专门能力,(4)用户想扩展代理能力,(5)用户想搜索工具,模板,或工作流程,(6)用户提到他们希望…

运维与云

Microsoft Foundry

构建,部署,评价,优化,微调,管理微软创始代理,模型,资源最终结束. 用法:铸造、azd ai代理、azd 提供/部署、托管代理脚手架/开发/运行/部署/拖放、即时代理创建、创建代理、更新代理、添加代理工具、援引代理、代理.yaml、评估代理、批量活化、连续活化、持续监测、代理C…

运维与云

Azure Deploy

执行已有.azure/部署计划.md和基础设施文件的ALREADY-PREPARED应用程序的Azure部署。 当用户向 CREATE 请求新应用程序时, 请不要使用此技能 。 这种技能运行了 azd上行, azd 部署, trarraform 应用, 和 az 部署命令带有内置…