2017-05-19 90 views
1

我無法通過在泊塢窗鏡像中運行的http://localhost:8000訪問基於nodejs的服務。我正在使用適用於Mac的Docker(https://docs.docker.com/docker-for-mac/無法訪問在Docker中運行的服務

我在此處教程https://nodejs.org/en/docs/guides/nodejs-docker-webapp/

服務器在端口8000上運行我用下面的啓動泊塢窗圖像:

$ docker run -p 8000:8000 -d geuis/node-server:latest 

如果我跑docker ps我看到:

CONTAINER ID  IMAGE      COMMAND    CREATED    STATUS    PORTS     NAMES 
9fa2e446918b  geuis/node-server:latest "npm start"   6 seconds ago  Up 5 seconds  0.0.0.0:8000->8000/tcp unruffled_lewin 

如果我docker exec -it 9fa2e446918b /bin/bash我可以訪問該泊塢窗VM我可以curl http://localhost:8000並從容器內訪問服務器。

但是,我嘗試從我的系統終端嘗試相同的curl http://localhost:8000並且無法訪問。

不知道接下來我需要做什麼。

+1

我試圖與碼頭爲Mac和它的作品。除港口外,您還有其他修改嗎? – Holger

+0

您可以使用默認的Docker IP,.i.e http://192.168.99.100:8000訪問該服務嗎? (或任何其他IP,如果您指定了默認值以外的其他IP) – dchar

回答

4

請嘗試以下聽聲明:

app.listen(PORT, '0.0.0.0'); 

從閱讀你所提到的教程,它看起來像表達的是偵聽localhost。如果您在本地運行但在容器內運行,這很好,localhost與容器外部的localhost不一樣。

0.0.0.0unspecified IPv4 address所以Express將綁定在它可以找到的任何IP上,這將是您的請求從容器外部進入的IP。

+0

是的,這是它。使用hapijs而不是Express,但使用相同的解決方案。 – Geuis

相關問題