lecheminvert.tech/Dockerfile

25 lines
722 B
Text
Raw Normal View History

# 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"]