Multi-stage Build

DevOps 🟡 Mid

Définition

Technique Dockerfile utilisant plusieurs FROM pour séparer build et runtime. L'image finale ne contient que les artefacts nécessaires.

Analogie

Construire un meuble en atelier puis ne livrer que le meuble fini, pas les outils ni les copeaux.

Exemple de code

FROM node:20 AS build
WORKDIR /app
COPY . .
RUN npm ci && npm run build

FROM node:20-alpine
COPY --from=build /app/dist ./dist
CMD ["node", "dist/server.js"]

Cas d'usage

Réduire la taille des images de production de 1 Go à moins de 100 Mo.

Anti-pattern

Inclure les devDependencies et le code source dans l'image finale.
#devops#docker#interview#optimisation

En entretien

  1. Explique-moi ce qu'est un multi-stage build Docker.

    C'est une technique de Dockerfile utilisant plusieurs FROM pour séparer build et runtime, de sorte que l'image finale ne contient que les artefacts nécessaires. C'est comme construire un meuble en atelier puis ne livrer que le meuble fini, pas les outils ni les copeaux.

  2. Quel gain concret apporte le multi-stage build ?

    Il permet de réduire la taille des images de production de 1 Go à moins de 100 Mo. Dans l'exemple, le stage build compile avec npm ci && npm run build, puis seul /app/dist est copié dans l'image finale node:20-alpine.

  3. Quelle erreur fait grossir inutilement une image Docker ?

    Inclure les devDependencies et le code source dans l'image finale au lieu de ne copier que les artefacts buildés. C'est exactement ce que le multi-stage build évite en séparant le stage de build du stage runtime.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre