# ─── Stage 1: Build ─────────────────────────────────────────────────────────── FROM node:20-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci --ignore-scripts COPY . . RUN npm run build # ─── Stage 2: Production ────────────────────────────────────────────────────── FROM node:20-alpine AS runner WORKDIR /app ENV NODE_ENV=production # Deps de produção apenas COPY package*.json ./ RUN npm ci --omit=dev --ignore-scripts # Artefatos do build COPY --from=builder /app/dist ./dist COPY --from=builder /app/shared ./shared COPY --from=builder /app/migrations ./migrations EXPOSE 5000 HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \ CMD wget -qO- http://localhost:5000/api/health || exit 1 CMD ["node", "dist/index.cjs"]