2016-08-19 9 views
4

私はDockerの使い方を学ぶ上で最初の段階ですので、基本的なことを試しています。私は、HTTPリクエストを介してデータを交換する必要のある2つのNode Expressサービスを作成しました。コンテナ間のDocker HTTPリクエスト

docker-compose.ymlファイルが

networks: 
    isolation-network: 
    driver: bridge 

services: 
    service1-nodejs: 
    build: 
    context: ./service1/ 
    dockerfile: .docker/node.dockerfile 
    ports: 
     - "10000:9000" 
     - "10001:5858" 
    env_file: ./service1/.docker/env/app.${APP_ENV}.env 
    networks: 
     - isolation-network 

    service2-nodejs: 
    build: 
    context: ./service2/ 
    dockerfile: .docker/node.dockerfile 
    ports: 
     - "10010:9000" 
     - "10011:5858" 
    env_file: ./service2/.docker/env/app.${APP_ENV}.env 
    networks: 
     - isolation-network 

service1service 2へのPOSTリクエストを作るためにrequest moduleを使用しています。

request({ url: "http//service2:10010/api/", 
       method: "POST", 
       headers: { "Content-Type": "application/json" }, 
       json: true, 
       body: { ... }, 
       time: true 
      }, function (err, res, body) { 
       if (!err && res.statusCode == 200) { 
        // success 
       } 

       // failed 
      }); 

この呼び出しの結果は次のとおりです。

郵便配達を使用して

{ Error: connect ECONNREFUSED 172.18.0.3:10010}

私はhttp://localhost:10010/api/service2をテストすることができると私は予想通り、彼らが実際に到達して働くことができることを確認することができます。

私は何かが不足していますが、それを理解できません。ここで何がうまくいかないのですか?

答えて

8

See the document。ポート10010はホストポートであるがコンテナポートではない。 service2コンテナに直接アクセスする場合は、9000を使用する必要があります。

"http://service2:10010/api/"から"http://service2:9000/api/"に変更しても問題ありません。

+0

+コンテナを別のものにリンクする必要があります –

+0

@JohannesMerz彼はネットワークを使い、 "service2"が "172.18.0.3"と解決されました。 –

+1

私はネットワークを使用しているので、コンテナの内部ポートを使用してリンクする必要はありません。私の問題を解決しました – Gavello

関連する問題