7

を使用してDocker for Macいます。サーバーを実行するコンテナーがあります。たとえば、サーバーはポート 5000 で実行されています。Dockerfile

コンテナーが実行されているときに、このコンテナーに接続し、以下のコマンドを実行してこのサーバーが機能しているかどうかを確認し、データ (html と javascript の束) が返されることを確認します。

wget -d localhost:5000

注、このコンテナを起動し、コマンドでポートを外部に公開します:

docker run -d -p 5000:5000 <docker_image_name>

しかし、docker ホスト (私の Mac で El Capitan を実行している) で、chrome を開いて address に移動しますlocalhost:5000。うまくいきません。少し注意してください。任意のポートに移動すると、次のlocalhost:4000ようなクロムからのエラーメッセージが表示されます。

This site can’t be reached
localhost refused to connect.

ただし、エラーメッセージlocalhost:5000は次のとおりです。

The localhost page isn’t working
localhost didn’t send any data.

そのため、「少し」作業を構成したようですが、何か問題があります。これを修正する方法を教えてください。

4

2 に答える 2

6

コンテナー内のプログラムがインターフェイス 0.0.0.0 でリッスンしていることを確認してください。

コンテナーで、次のコマンドを実行します。

ss -lntp

次のように表示される場合:

LISTEN  0   128   127.0.0.1:5000  *:*

つまり、Web アプリは localhost でのみリッスンするため、コンテナー ホストは Web アプリにアクセスできません。0.0.0.0Web アプリのビルド設定を変更して、サーバーがインターフェイスでリッスンするようにする必要があります。

たとえば、サーバーが nodejs アプリの場合:

var app = connect().use(connect.static('public')).listen(5000, "0.0.0.0");

サーバーが Web パックの場合:

 "scripts": {
    "dev": "webpack-dev-server --host 0.0.0.0 --port 5000 --progress"
  }
于 2016-11-27T14:14:07.963 に答える
2

Angular2 アプリを実行しようとして、Docker for Mac を使用してこの問題が発生しました。

package.json を次のように変更して問題を修正しました

 "scripts": {
    ...
    "start": "ng serve -H 0.0.0.0", # before, this was "start": "ng serve"
  }
于 2017-07-06T23:28:15.010 に答える