25 lines
722 B
Text
25 lines
722 B
Text
|
|
# 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"]
|