# ---------- BUILD STAGE ---------- FROM node:20 AS builder WORKDIR /app # Copy only package files first COPY package*.json ./ # Install ALL deps (dev + prod) RUN npm install # Copy source code COPY . . # Build Next.js RUN npm run build # Remove devDependencies, keep only production deps RUN npm prune --omit=dev # ---------- PRODUCTION STAGE ---------- FROM node:20-alpine AS runner WORKDIR /app ENV NODE_ENV=production # Copy production deps only COPY --from=builder /app/node_modules ./node_modules # Copy minimal runtime files COPY --from=builder /app/package*.json ./ COPY --from=builder /app/.next ./.next COPY --from=builder /app/next.config.ts ./next.config.ts # Ownership fix (optional but recommended) RUN chown -R node:node /app # Switch to built-in non-root user USER node EXPOSE 3000 CMD ["npm", "start"]