# Imagen de produccion para cootrasaravitabotcliente (compatible con Podman y Docker).
# Misma imagen para API (server) y workers; el comando se redefine en compose.

# --- Etapa de compilacion ---
FROM docker.io/library/node:24.14.1-alpine3.23 AS builder

WORKDIR /app

COPY package.json package-lock.json ./
RUN npm ci

COPY tsconfig.json ./
COPY src ./src

RUN npm run build \
  && npm prune --omit=dev

# --- Etapa de ejecucion ---
FROM docker.io/library/node:24.14.1-alpine3.23 AS runner

WORKDIR /app

ENV NODE_ENV=production \
    PORT=3000

RUN addgroup -S app && adduser -S app -G app

COPY package.json package-lock.json ./
RUN npm ci --omit=dev && npm cache clean --force

COPY --from=builder /app/dist ./dist

USER app

EXPOSE 3000

# Healthcheck sin dependencias extra (curl/wget no vienen en alpine node).
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \
  CMD node -e "fetch('http://127.0.0.1:'+(process.env.PORT||3000)+'/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"

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