Mon image Docker Node.js fait 1,2 Go, comment la réduire ?
poze 5 months ago78 gadefr
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 ?
Dyagnostik IA
Se IA ki fè l. Se pa yon repons — kominote a anba a konfime oswa korije l. Toujou verifye anvan ou fye l.
1 Repons
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.
Konekte pou di lòt moun si li te mache.
Sign in and verify your email to post an answer.