# --- ÉTAPE 1 : BUILD ---
FROM node:20-alpine AS build-stage
RUN apk update && apk add --no-cache \
    build-base gcc autoconf automake zlib-dev libpng-dev vips-dev git > /dev/null 2>&1

ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}

WORKDIR /opt/app
COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile
COPY . .

# On force le build de l'admin explicitement pour être sûr que le dossier existe
RUN yarn build

# --- ÉTAPE 2 : RUNTIME ---
FROM node:20-alpine AS runtime-stage
RUN apk add --no-cache vips-dev libpng libjpeg-turbo

ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}

WORKDIR /opt/app

# ASTUCE : On copie tout l'objet de build avec --chown
# Cela évite de lister les dossiers un par un et de risquer un "Not Found"
COPY --from=build-stage --chown=node:node /opt/app ./

# On expose le binaire
ENV PATH=/opt/app/node_modules/.bin:$PATH

USER node
EXPOSE 1337

CMD ["yarn", "start"]