Mon image Docker Node.js fait 1,2 Go, comment la réduire ?
posée 5 months ago82 vuesfr
FROM node:22
WORKDIR /app
COPY . .
RUN npm install
RUN npm run build
CMD ["node", "dist/server.js"]
L'image finale fait 1,2 Go et le déploiement est lent. Des astuces ?
Diagnostic IA
Généré par IA. Ce n'est pas une réponse — la communauté ci-dessous le confirme ou le corrige. Vérifiez toujours avant de vous y fier.
1 réponse
Trois leviers :
1. Build multi-étapes : on compile dans une étape, et on ne copie que le résultat dans une image légère.
FROM node:22-slim AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build && npm prune --omit=dev
FROM node:22-slim
WORKDIR /app
ENV NODE_ENV=production
COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/dist ./dist
USER node
CMD ["node", "dist/server.js"]
2. Image de base légère : node:22-slim (~200 Mo) au lieu de node:22 (~1 Go). alpine est encore plus petite, mais attention aux modules natifs (musl).
3. .dockerignore : exclut node_modules, .git, .env, coverage… Sinon COPY . . les envoie dans le contexte.
Bonus : copier package*.json avant le reste du code permet au cache Docker de sauter npm ci quand seules les sources changent. Les builds deviennent beaucoup plus rapides.
Connectez-vous pour dire si ça a marché.
Sign in and verify your email to post an answer.