diff --git a/common/dockerfile-layer-cache-ordre.md b/common/dockerfile-layer-cache-ordre.md new file mode 100644 index 0000000..5c55ffd --- /dev/null +++ b/common/dockerfile-layer-cache-ordre.md @@ -0,0 +1,30 @@ +# 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.