# Multi-stage build para imagem leve de produção
FROM node:18-alpine AS builder

WORKDIR /app

# Instalar dependências de produção
COPY package*.json ./
RUN npm ci --omit=dev

# Imagem final de runtime
FROM node:18-alpine

WORKDIR /app

# Dependências de sistema opcionais (ex.: cliente psql para health/debug)
RUN apk add --no-cache postgresql-client

# Usuário não-root dedicado
RUN addgroup -g 1001 -S nodejs \
  && adduser -S nodejs -u 1001

# Copiar node_modules e código
COPY --from=builder --chown=nodejs:nodejs /app/node_modules ./node_modules
COPY --chown=nodejs:nodejs . .

USER nodejs

ENV NODE_ENV=production
EXPOSE 3000

# Healthcheck bate no endpoint /health já exposto pelo app
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
  CMD wget -qO- http://127.0.0.1:3000/health || exit 1

CMD ["node", "src/server.js"]
