Docker sous Windows & NPM: un marriage parfois difficile
Problème
Vous êtes sous Windows, et vous utilisez donc Docker For Windows.
Vous avez une image Docker de développement, qui contient un certain nombre d'outils comme NodeJs et NPM.
Pour travailler, vous lancez cette image en partageant des volumes qui contient vos projets.
Et là, vous installez des dépendances NPM ...
Que se passe-t-il ?
Dans une de vos dépendances NPM, vous allez très certainement avoir une dépendance que nous pouvons utiliser en ligne de commande. Il va donc créer un fichier dans le répertoire ".bin".
Le hic est le suivant: votre image Docker tourne sur un noyau Linux. Du coup, NPM croit que vous êtes sur Linux et veut donc créer un symlinks.
Or le répertoire que vous avez partagé est un répertoire Windows. Et vous allez alors tomber sur des problèmes de droits.
Quelles solutions ?
Travailler dans son répertoire C:/Users/XXX
En effet, Docker For Windows a plus de droits dans ce répertoire et posera moins de soucis. Néanmoins, il se peut que vous ne pouvez pas utiliser ce répertoire, et cela va donc poser problème.
Ne pas gérer le .bin
Quand vous installez une dépendance, vous pouvez faire:
> npm install --no-bin-dir
Ceci ne généra pas les liens vers le répertoire .bin. En revanche, cela vous demandera de le faire pour chaque commande.
Vous pouvez néanmoins le déclarer dans votre fichier .npmrc (voir ce lien):
bin-links=false
Dire à Docker de gérer Symlinks
Normalement, les dernières versions de Docker For Windows sont censés le gérer. Si cela n'est pas le cas, tapez la commande:
> VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1
Pensez bien à remplacer VM_NAME et SHARE_NAME. Voir ce lien.
Donner plus de droits à Docker
Le plus sûr.
Allez sur le Docker.exe et faites clique droit puis "Propriétés". Vous allez avoir:
Cochez alors la case "Run as administrator", puis cliquez sur le bouton "Change settings for all users".
Là aussi, cochez "Run this program as administrator".
Redémarrez Docker et votre image, et là vous irez plus de soucis.
Enjoy !
Commentaires
Enregistrer un commentaire