FROM oven/bun:1-alpine AS base WORKDIR /app # ── dev ─────────────────────────────────────────────────────────────────────── # src/ is bind-mounted at runtime; only deps are baked in. FROM base AS dev COPY package.json bun.lock ./ RUN bun install EXPOSE 3000 CMD ["bun", "--hot", "src/index.ts"] # ── prod ────────────────────────────────────────────────────────────────────── FROM base AS prod ENV NODE_ENV=production COPY package.json bun.lock bunfig.toml ./ RUN bun install --frozen-lockfile COPY src ./src RUN mkdir -p data EXPOSE 3000 CMD ["bun", "src/index.ts"]