# ── Stage 1 : Build TypeScript ───────────────────────────────
FROM node:20-alpine AS builder
WORKDIR /app

COPY package.json ./
RUN npm install --include=dev

COPY tsconfig.json ./
COPY src/ ./src/

# Compile tout (app + scripts) → dist/
RUN npm run build

# Copier les fichiers non-TypeScript (SQL, assets) dans dist/
RUN cp -r src/migrations dist/migrations

# ── Stage 2 : Image de production ────────────────────────────
FROM node:20-alpine AS runtime
WORKDIR /app

ENV NODE_ENV=production

# Dépendances de production uniquement
COPY package.json ./
RUN npm install --omit=dev

# Code compilé (app + scripts)
COPY --from=builder /app/dist ./dist

# Dossiers de stockage (montés via volume en prod)
RUN mkdir -p /app/uploads/images /app/uploads/pdfs

# Script de démarrage
COPY docker-entrypoint.sh ./
RUN chmod +x /app/docker-entrypoint.sh

EXPOSE 3001

ENTRYPOINT ["/app/docker-entrypoint.sh"]
