# Stage 1: Build the Angular application and the Bun static server FROM oven/bun:1.4.3-alpine@sha256:629e17411f1f129dbec3af78d5af9c9f2a937435c80349437206c6b0b7422373 AS builder WORKDIR /app COPY package.json bun.lock ./ RUN bun install --frozen-lockfile COPY . . # bunfig.toml makes the Node-shebang Angular CLI run on Bun; the image has no Node RUN bun run build # Stage 2: Production image FROM oven/bun:1.4.3-alpine@sha256:629e17411f1f129dbec3af78d5af9c9f2a937435c80349437206c6b0b7422373 AS production WORKDIR /app # The server is a self-contained Bun bundle that serves the browser build, so # the runtime has no dependencies to install. COPY --from=builder /app/dist ./dist ENV NODE_ENV=production EXPOSE 4000 HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \ CMD bun -e "fetch('http://localhost:' + (process.env.PORT || 4000) + '/').then(r => process.exit(r.ok ? 0 : 1), () => process.exit(1))" CMD ["bun", "dist/vac-optimizer/server/server.js"]