2016-08-31 2 views
6

Mein Ziel ist es, einen Docker-Container einzurichten, der einen NodeJS-Server automatisch neu startet, wenn Dateiänderungen vom Hostcomputer erkannt werden.Nodemon startet nicht in der Windows Docker-Umgebung neu

Ich habe nodemon ausgewählt, um die Dateien auf Änderungen zu beobachten.

In Linux- und Mac-Umgebungen funktionieren nodemon und docker einwandfrei.

Wenn ich jedoch in einer Windows-Umgebung bin, startet Nodemon den Server nicht neu.

Die Dateien werden auf dem Hostcomputer aktualisiert und mit dem Parameter volumes in der Datei docker-compose.yml verknüpft.

Ich kann sehen, die Dateien haben sich geändert, wenn ich docker exec <container-name> cat /path/to/fileChanged.js ausführen. Auf diese Weise weiß ich, dass die Dateien korrekt verknüpft und im Container geändert wurden.

Gibt es einen Grund, warum nodemon den Server für Windows nicht neu startet?

Antwort

11

Verwenden Sie nodemon --legacy-watch, um nach Dateiänderungen zu suchen, anstatt Dateisystemereignisse abzuhören.

VirtualBox doesn't pass file system events over the vboxfs share zu Ihrer Linux-VM. Wenn Sie Docker für Windows verwenden, scheint es, dass HyperV auch keine Dateisystemereignisse verbreitet.

+0

Vielen Dank! Ich habe gerade diesen Abschnitt in der [Nodemon README] (https://github.com/remy/nodemon#application-isnt-restarting) ausgecheckt. Ich schätze Ihre unglaubliche Reaktionszeit. – RyanNHG

+0

Sie können auch eine Abrufzeit angeben: Fügen Sie dies einfach zur Konfigurationsdatei nodemon.json hinzu: "legacyWatch": true, "pollingInterval": 4000 –

+0

Für die Neuankömmlinge und so: Ein Befehl dafür aus Ihrer Dockerfile ist: 'CMD [ "nodemon", "-L", "Ihre_Datei_hier"] '. Oder Sie können ähnlich etwas in Ihre Docker-Datei einfügen: 'CMD [" npm "," run "," custom_script_name "]' und dann in 'package.json' put' "scripts": { "custom_script_name": "nodemon -L your_file_here ", ... }' Jeder von diesen wird diesen Befehl von Ihrem Dockerfile nach 'docker-compose up' ausführen. –