# --- Stage 1: Build --- FROM node:20-alpine as builder WORKDIR /app RUN npm install -g pnpm@9 COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ COPY packages packages COPY tooling tooling COPY .env.production .env RUN pnpm install --frozen-lockfile COPY . . RUN pnpm build # --- Stage 2: Runtime --- FROM node:20-alpine WORKDIR /app COPY --from=builder /app ./ COPY .env.production .env RUN npm install -g pnpm@9 \ && pnpm install --prod --frozen-lockfile ENV NODE_ENV=production EXPOSE 3000 CMD ["pnpm", "start"]