Aller au contenu principal

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

Docker
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_modules

Le 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 frontend

Le 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 ? 😄

Voir le post original sur LinkedIn