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

1.5 KiB

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.

# --- 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.