# Etape 1 : on construit l'application avec toutes les dependances. FROM node:24-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # Etape 2 : l'image finale ne garde que le resultat du build. # Ni sources, ni node_modules de developpement : environ 150 Mo au lieu de 800. FROM node:24-alpine AS runner WORKDIR /app ENV NODE_ENV=production ENV NITRO_PORT=3000 ENV NITRO_HOST=0.0.0.0 # On ne tourne pas en root : si l'application est compromise, # l'attaquant n'a pas les pleins pouvoirs dans le conteneur. RUN addgroup -S nuxt && adduser -S nuxt -G nuxt COPY --from=builder --chown=nuxt:nuxt /app/.output ./.output USER nuxt EXPOSE 3000 CMD ["node", ".output/server/index.mjs"]