Mon image Docker Node.js fait 1,2 Go, comment la réduire ?
asked 5 months ago80 viewsfr
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 ?
AI diagnosis
AI-generated. Not an answer — the community below confirms or corrects it. Always verify before relying on it.
1 Answer
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.
Sign in to tell others whether this worked.
Sign in and verify your email to post an answer.