# ========================================================== # Stage 1 — Builder # ========================================================== FROM node:20-bookworm AS builder # On force une locale et on active un cache PNPM local ENV LANG=C.UTF-8 ENV PNPM_HOME=/usr/local/share/pnpm ENV PATH=$PNPM_HOME:$PATH WORKDIR /app # Copie des fichiers nécessaires à l’installation COPY package.json pnpm-lock.yaml ./ # Installation propre et isolée RUN npm install -g pnpm@9 && pnpm install --frozen-lockfile # Copie du reste du projet (sans node_modules ni .output) COPY . . # Build Nuxt ou autre app JS RUN pnpm build # ========================================================== # Stage 2 — Runner (production) # ========================================================== FROM node:20-slim AS runner ENV NODE_ENV=production WORKDIR /app # On ne garde que l’output final (pas de node_modules PNPM dans la prod) COPY --from=builder /app/.output ./.output COPY --from=builder /app/package.json ./ EXPOSE 3000 # Commande de démarrage (Nuxt 3 par défaut) CMD ["node", ".output/server/index.mjs"]