2017-05-19 8 views
1

ドッカー画像で実行中のhttp://localhost:8000経由でnodejsベースのサービスにアクセスできません。私はMac用のDockerを使用しています(https://docs.docker.com/docker-for-mac/ドッカーで実行中のサービスにアクセスできない

私はチュートリアルに従っています。

サーバーは、私は次のようにドッキングウィンドウのイメージを起動し、ポート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

これはそれでした。 Expressの代わりにhapijsを使用しましたが、同じソリューションです。 – Geuis

関連する問題