私は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
service1
service 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
をテストすることができると私は予想通り、彼らが実際に到達して働くことができることを確認することができます。
私は何かが不足していますが、それを理解できません。ここで何がうまくいかないのですか?
+コンテナを別のものにリンクする必要があります –
@JohannesMerz彼はネットワークを使い、 "service2"が "172.18.0.3"と解決されました。 –
私はネットワークを使用しているので、コンテナの内部ポートを使用してリンクする必要はありません。私の問題を解決しました – Gavello