2016-03-29 48 views
1

Ich versuche npm install durch einen Docker Behälter zu laufen, mit:npm installiert werden kann, wenn durch einen Docker Behälter läuft

docker run -it --rm -v $(pwd):/src cthulhu666/yeoman npm install 

aber es funktioniert nicht immer mit einer Botschaft nach dem Vorbild der folgenden Möglichkeiten:

85351 error node v5.5.0 
85352 error npm v3.3.12 
85353 error path /src/node_modules/.defaults.DELETE/node_modules/clone 
85354 error code ENOENT 
85355 error errno -2 
85356 error syscall rename 
85357 error enoent ENOENT: no such file or directory, rename '/src/node_modules/.defaults.DELETE/node_modules/clone' -> '/src/node_modules/defaults/node_modules/clone' 
85357 error enoent This is most likely not a problem with npm itself 
85357 error enoent and is related to npm not being able to find a file. 

Ich sage "im Sinne von", weil es nicht immer diese Datei ist ... Vor ein paar Tagen, als ich es versuchte, versagte es in einer anderen Datei.

Ich habe versucht auf einer anderen Maschine, mit der gleichen package.json und nur mit der globalen npm install anstatt durch den Docker-Container und es hat gut funktioniert, so scheint es ein Problem mit der Ausführung auf bereitgestellten Volumes.

Ich bin nicht wirklich sicher, wie man dies allerdings zu beheben - ob es ein Problem Docker, ein npm Problem oder etwas ganz anderes ...

(nur für den Fall nützlich es ist, ist dies die package.json: https://github.com/roots/sage/blob/master/package.json)

Update 1

ich habe docker run -it --rm -v $(pwd):/src cthulhu666/yeoman /bin/bash versuchte, läuft und dann npm install in der Schale läuft, aber das gleiche passiert.

aktualisieren 2

ich vergessen zu erwähnen ... Ich bin auf OSX Docker-Maschine. Die Docker-Maschine-VM ist VMWare Fusion, da die VirtualBox-basierten Computer Leistungsprobleme hatten. Wie auch immer, ich habe gerade versucht, den Virtualbox-Rechner hochzufahren und den Befehl auszuführen, und er wird erfolgreich abgeschlossen - es sieht so aus, als wäre es etwas, was VMWare Fusion betrifft.

+0

Haben Sie versucht, eine Dockerfile zu erstellen, wo Sie Ihre npm-Installation dann einmal erstellen können, erstellt Ihr Bild dann einen Docker ausführen, um Ihre Verarbeitung zu starten? ... nur zum Spaß als Alternative in Ihrem obigen docker run Befehl ersetzen npm install mit bash dann an der interaktiven Terminal Eingabeaufforderung manuell geben npm installieren oder so, wo Sie mehr Freiheit haben, Fehler zu beheben –

+0

Kein Glück, eine/bin/bash Shell und dann laufe npm install in das, ich bekomme immer noch den gleichen Fehler. Ich bin mir nicht sicher, was du damit meinst, eine andere Dockerfile zu erstellen ...? Ich habe versucht, mein eigenes Bild basierend auf node5-slim zu erstellen, aber es tut das gleiche ... –

+0

Der Befehl npm install funktioniert nur, wenn das aktuelle Verzeichnis eine Datei namens: package.json ... also beim Starten mit bash enthält ls -la, um Dateien zu zeigen, vielleicht müssen Sie zuerst in ein anderes Verzeichnis cd –

Antwort

0

Dies gibt eine Anleitung zur Beantwortung der Frage. Versuchen

(1) Knoten zu verwenden: 5.9.1 auszuschließen irgendwelche Probleme mit dem Yeoman Bild

(2) RUN v ENTRYPOINT

RUN - npm install mit RUN in Ihrem Dockerfile funktioniert die npm install während den Docker-Build-Prozess und speichert die Knotenmodule in Ihrem Image. Dies ist großartig, es sei denn, Sie möchten den Ordner node_modules mounten. Das Mounten von node_modules an den Host überschreibt es. es in einem anderen Behälter Montag volumes_from Verwendung ist ok

ENTRYPOINT - npm install mit ENTRYPOINT die npm install als Teil des Befehls CLI docker run tut. Dies ist in Ordnung, wenn Sie node_modules montieren.

(Ich konnte nicht herausfinden, wenn Sie node_modules mounten).

(3) SIMPLIFY

Auch Sie können alle Pakete von Ihrem package.json entfernen möchten, die problematisch zu sein scheinen und sie einer nach dem anderen wieder einführen, dann können Sie das genaue Problem lokalisieren.

+0

Danke @ danday74, ich werde diese Punkte heute Nachmittag versuchen. Es ist seltsam, dass es auf einer VirtualBox-VM funktioniert, oder einfach nur NPM-Installation außerhalb von Docker laufen. Würde vorschlagen, dass es sich um ein Problem mit dem VMWareFusion-Docker-Computer handelt ... –

Verwandte Themen