# ── Image de production de l'API Tropicale FM ──
FROM node:20-alpine

WORKDIR /app

# Prisma a besoin d'OpenSSL sur Alpine (sinon « schema engine » échoue).
RUN apk add --no-cache openssl libc6-compat

# Dépendances (couche cache séparée)
COPY package*.json ./
RUN npm ci --omit=dev || npm install --omit=dev

# Schéma Prisma + génération du client
COPY prisma ./prisma
RUN npx prisma generate

# Code source
COPY src ./src

# Dossier d'uploads (monté en volume en prod, ou remplacé par S3)
RUN mkdir -p uploads

ENV NODE_ENV=production
EXPOSE 4000

# Synchronise le schéma puis démarre. (En prod stricte : `prisma migrate deploy`.)
CMD ["sh", "-c", "npx prisma db push --skip-generate && node src/server.js"]
