# --- ÉTAPE 1 : BUILD --- FROM node:20-alpine AS build-stage # Installation des outils pour les modules natifs 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} # ON SE MET DIRECTEMENT DANS LE BON DOSSIER WORKDIR /opt/app # On copie les fichiers de dépendances COPY package.json yarn.lock ./ # Installation (Les node_modules seront créés dans /opt/app/node_modules) RUN yarn install --frozen-lockfile # On copie le reste du projet COPY . . # Maintenant Yarn trouvera Strapi sans problème 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 # On récupère tout le dossier de build (qui contient maintenant les node_modules au bon endroit) COPY --from=build-stage /opt/app ./ # On expose le binaire de Strapi dans le PATH au cas où ENV PATH=/opt/app/node_modules/.bin:$PATH RUN chown -R node:node /opt/app USER node EXPOSE 1337 CMD ["yarn", "start"]