# ── Build stage ──────────────────────────────────────────────────────────────── FROM oven/bun:1 AS builder WORKDIR /app # Copy dependency manifests first for better layer caching COPY package.json bun.lock ./ # Install all deps (including devDependencies needed for the build). RUN bun install --frozen-lockfile # Copy source and build COPY . . RUN bun run build # Prune to production-only deps RUN bun install --frozen-lockfile --production # ── Runtime stage ─────────────────────────────────────────────────────────────── FROM oven/bun:1 AS runtime WORKDIR /app # Create a non-root user to run the app RUN groupadd --system trips && useradd --system --gid trips trips # Copy the built app and production node_modules from the builder COPY --from=builder /app/build ./build COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/package.json ./package.json # Directory for the SQLite database (mount a volume here) RUN mkdir -p /data && chown trips:trips /data USER trips ENV NODE_ENV=production ENV DATABASE_URL=file:/data/trips.db ENV PORT=3000 EXPOSE 3000 CMD ["bun", "build/index.js"]