31 lines
1.5 KiB
Markdown
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.
|