Files
nas-runbooks/common/dockerfile-layer-cache-ordre.md
T

31 lines
1.5 KiB
Markdown

# Dockerfile : ordre des couches pour eviter un rebuild complet
## Probleme
Ajouter une dependance (ex: git) a un Dockerfile hermes en la fusionnant dans un bloc
apt-get deja construit invalide le cache Docker de cette couche ET de toutes les
couches suivantes, meme si leur contenu texte est identique. Sur hermes-nabil (VPS),
la couche suivante est 'hermes postinstall' qui retelecharge le toolset navigateur
Chromium (~400 Mo). Un simple git manquant aurait coute un rebuild complet.
## Solution
Ajouter la nouvelle dependance dans une couche RUN separee, placee APRES les couches
lourdes deja cachees (mais avant CMD). Seule cette petite couche est reconstruite ;
tout ce qui precede reste servi depuis le cache.
```dockerfile
# --- git : necessaire pour cloner/mettre a jour les skills type video-use ----
# Couche separee EXPRES, apres hermes postinstall : la fusionner avec le
# apt-get plus haut invaliderait le cache et forcerait un retelechargement
# complet du toolset navigateur Chromium (~400 Mo) a chaque petit ajout.
RUN apt-get update && apt-get install -y --no-install-recommends git \
&& rm -rf /var/lib/apt/lists/*
```
Resultat mesure sur hermes-nabil (21/07/2026) : rebuild en ~1 minute, git 2.47.3
fonctionnel post-recreate, /data (bind mount) intact.
## Regle generale
S'applique a tout Dockerfile hermes (3 NAS + VPS) : toute dependance systeme mineure
ajoutee apres coup va en couche RUN dediee, en fin de fichier (avant CMD), jamais
fusionnee dans le bloc apt-get d'origine.