2017-07-03 152 views
0

我試圖在OS X(最新更新10.12.5)上的Docker(17.06)容器中運行簡單的Node.js/Express網絡應用程序。我無法連接到應用程序localhost:3000,我無法弄清楚什麼是錯的。我也試圖通過在控制檯上運行ip addr | grep global無法連接到虛擬機的IP地址。無法連接到OS X上發佈的Docker端口

我的應用程序其實就是JetBrains Webstorm在創建類型爲「Node.js Express App」的新項目時創建的框架。請注意,我可以通過npm start在我的主機系統上運行此應用程序,併成功連接到localhost:3000

我再建一個碼頭工人的圖像,像這樣:

docker build -t joonas/meancopy . 

運行:

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

而後被扔在虛擬機的外殼,我跑npm start,並得到如下:

[[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 

輸出結果與在主機上運行期望的開始時的「npm info」行相同nning。但是,我無法連接到此服務器localhost:3000

我也試過運行--expose=3000--net="host"的圖片,因爲我在網上搜索解決方案時發現了這些圖片,但它們並沒有幫助(而且我的理解在這裏甚至都不需要)。

任何幫助或調試的想法,非常感謝!

回答

1

docker run命令是壞

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

你有這樣的表述方式,容器會嘗試和執行-p 3000:3000作爲容器的流程實例。您需要將-p參數放在之前的圖像名稱中。

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

現在docker會運行你的Dockerfile中定義的命令 - 這可能是node.js應用程序,如預期的那樣。

相關問題