# syntax=docker/dockerfile:1 # --- build stage: install deps + produce dist/server.js --- FROM oven/bun:1 AS build WORKDIR /app COPY package.json bun.lock* bun.lockb* ./ RUN bun install COPY . . RUN bun run build # --- runtime stage: slim image with only the built server + migrations --- FROM oven/bun:1-slim AS runtime WORKDIR /app ENV NODE_ENV=production ENV PORT=3000 COPY --from=build /app/dist ./dist COPY --from=build /app/app/db/migrations ./app/db/migrations EXPOSE 3000 HEALTHCHECK --interval=30s --timeout=3s --retries=3 \ CMD bun -e "fetch('http://localhost:'+(process.env.PORT||3000)+'/healthz').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))" CMD ["bun", "dist/server.js"]