# ─── Stage 1: Build ─────────────────────────────────────────────────────────── FROM node:20-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci 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 # Artefatos do build COPY --from=builder /app/dist ./dist COPY --from=builder /app/shared ./shared COPY --from=builder /app/migrations ./migrations # Arquivos de runtime necessários (caminhos quebrados pelo bundler) RUN cp /app/node_modules/connect-pg-simple/table.sql /app/dist/table.sql EXPOSE 5000 HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \ CMD wget -qO- http://127.0.0.1:5000/ || exit 1 CMD ["node", "dist/index.cjs"]