FROM oven/bun:1 AS deps WORKDIR /app COPY package.json bun.lock ./ RUN bun install --frozen-lockfile FROM node:22 AS builder WORKDIR /app COPY --from=deps /app/node_modules ./node_modules COPY . . # Prisma client + TypedSQL must be pre-generated locally (needs live DB for --sql). # src/generated/ is gitignored but included in Docker context from local dev. ENV DATABASE_URL="postgresql://placeholder:placeholder@localhost:5432/placeholder" ARG NEXT_PUBLIC_GOOGLE_MAPS_API_KEY ARG NEXT_PUBLIC_GOOGLE_MAP_ID ENV NEXT_PUBLIC_GOOGLE_MAPS_API_KEY=$NEXT_PUBLIC_GOOGLE_MAPS_API_KEY ENV NEXT_PUBLIC_GOOGLE_MAP_ID=$NEXT_PUBLIC_GOOGLE_MAP_ID RUN npx next build FROM node:22-slim AS runner WORKDIR /app ENV NODE_ENV=production ENV HOSTNAME=0.0.0.0 ENV PORT=3000 COPY --from=builder /app/.next/standalone ./ COPY --from=builder /app/.next/static ./.next/static COPY --from=builder /app/prisma ./prisma COPY --from=builder /app/prisma.config.ts ./prisma.config.ts RUN apt-get update -y && apt-get install -y openssl && rm -rf /var/lib/apt/lists/* RUN npm install --no-save prisma@7.3.0 dotenv@17 EXPOSE 3000 CMD npx prisma migrate deploy && node server.js