2017-07-03 3 views
0

Ich versuche, eine einfache Node.js/Express-Webanwendung in einem Docker-Container (17.06) unter OS X (letztes Update 10.12.5) auszuführen. Ich kann keine Verbindung zur App unter localhost:3000 herstellen und kann nicht herausfinden, was falsch ist. Ich habe auch versucht, mich mit der IP-Adresse der VM zu verbinden, die gefunden wird, indem ich ip addr | grep global in seiner Konsole ohne Erfolg laufen lasse.Verbindung zum veröffentlichten Docker-Port unter OS X nicht möglich

Meine App ist eigentlich nur das Framework JetBrains Webstorm erstellt beim Erstellen eines neuen Projekts vom Typ 'Node.js Express App'. Beachten Sie, dass ich diese App auf meinem Host-System über npm start ausführen und erfolgreich unter localhost:3000 verbinden kann.

Ich baute dann ein Docker Bild wie folgt:

docker build -t joonas/meancopy . 

Run it:

docker run -it -v `pwd`:/home/dev/src --name meancopy joonas/meancopy -p 3000:3000 

Und nachdem in der Shell-VM geworfen, ich laufe npm start und erhalten folgendes:

[[email protected]:~/src$ npm start 
npm info it worked if it ends with ok 
npm info using [email protected] 
npm info using [email protected] 
npm info lifecycle [email protected]~prestart: [email protected] 
npm info lifecycle [email protected]~start: [email protected] 

> [email protected] start /home/dev/src 
> node ./bin/www 

Die Ausgabe ist die gleiche wie bei der Ausführung auf dem Host erwartet für die "Npm Info" Zeilen in der Begi nning. Ich kann jedoch keine Verbindung zu diesem Server unter localhost:3000 herstellen.

Ich habe auch versucht, das Bild mit --expose=3000 und --net="host" zu laufen, weil ich diese bei der Suche nach Lösungen online gefunden habe, aber sie helfen nicht (und zu meinem Verständnis sollte nicht einmal hier notwendig sein).

Jede Hilfe oder Debugging-Ideen werden sehr geschätzt!

Antwort

1

Ihre docker run Befehl ist schlecht

docker run -it -v `pwd`:/home/dev/src --name meancopy joonas/meancopy -p 3000:3000 

die Art und Weise haben Sie das geschrieben, der Behälter wird versuchen, und -p 3000:3000 wie die Prozessinstanz des Behälters auszuführen. Sie müssen den -p Parameter vor den Namen des Bildes setzen.

docker run -it -v `pwd`:/home/dev/src --name meancopy -p 3000:3000 joonas/meancopy 

Jetzt Docker den Befehl definiert in Ihrem Dockerfile laufen - das ist wahrscheinlich die node.js App sein wird, wie erwartet.