Chapitre 1 · Leçon 2
Layers, cache et multi-stage builds
Section 1
Step 1
L'ordre des instructions dans un Dockerfile impacte le cache des layers. Les couches qui changent rarement doivent être en haut.
Dockerfile
1# ❌ Dockerfile naïf — cache invalidé à chaque changement de code
2FROM node:20
3COPY . . # invalide le cache à chaque modification
4RUN npm install # réinstalle TOUT à chaque build
5CMD ["node", "dist/index.js"]
6
7# ✅ Dockerfile optimisé — exploite le cache des layers
8FROM node:20-alpine AS base
9
10# Layer 1 : métadonnées du projet (change rarement)
11WORKDIR /app
12
13# Layer 2 : dépendances (change seulement si package.json change)
14COPY package.json pnpm-lock.yaml ./
15RUN corepack enable && pnpm install --frozen-lockfile
16
17# Layer 3 : code source (change souvent, mais le cache des dépendances est préservé)
18COPY . .
19RUN pnpm build
20
21# Exposition du port
22EXPOSE 3000
23
24# Utiliser un utilisateur non-root pour la sécurité
25USER node
26
27CMD ["node", "dist/index.js"]Step 2
Le multi-stage build permet d'utiliser plusieurs images intermédiaires dans un seul Dockerfile. Résultat : une image finale qui ne contient que le nécessaire pour la production.