# Big Brother: API AdonisJS + interface Angular dans une seule image.

# 1. Interface Angular
FROM node:24-alpine AS web
WORKDIR /web
COPY web/package.json web/package-lock.json ./
RUN npm ci
COPY web/ ./
RUN npx ng build

# 2. API AdonisJS (compilée dans /api/build)
FROM node:24-alpine AS api
RUN apk add --no-cache python3 make g++
WORKDIR /api
COPY api/package.json api/package-lock.json ./
RUN npm ci
COPY api/ ./
RUN node ace build

# 3. Image finale
FROM node:24-alpine

# git (mises à jour des projets), client Docker + compose (actions sur les
# conteneurs), tar (sauvegardes), tzdata (fuseau horaire de TZ)
RUN apk add --no-cache git docker-cli docker-cli-compose tar tzdata \
  && git config --system --add safe.directory '*'

WORKDIR /app
COPY --from=api /api/build ./
RUN apk add --no-cache --virtual .build python3 make g++ \
  && npm ci --omit=dev \
  && apk del .build
COPY --from=web /web/dist/web/browser ./public

ENV NODE_ENV=production
EXPOSE 3333

# Les migrations SQLite passent à chaque démarrage (rien à faire si la base est à jour).
CMD ["sh", "-c", "node ace migration:run --force && node bin/server.js"]
