Docker : « j'ai installé le package, pourquoi le conteneur ne le voit pas ?! »

Un classique du dev frontend sous Docker. La config habituelle :
volumes:
- ./ui:/app
- /app/node_modulesLe deuxième volume est un volume anonyme : il « protège » node_modules du montage du code source. Pratique… jusqu'au jour où vous ajoutez un package. 🤔
Car ce volume anonyme persiste entre les redémarrages. Vous rebuildez l'image avec le nouveau package, mais le conteneur monte toujours l'ancien volume avec l'ancien node_modules. Le package est introuvable.
La solution que j'applique systématiquement après chaque ajout de dépendance :
docker compose rm -fv frontend
docker compose up -d frontendLe flag -v supprime les volumes anonymes associés, et le conteneur repart avec le node_modules fraîchement construit dans l'image.
Petit détail, mais combien d'heures perdues collectivement sur ce piège ? 😄


