私はDockerの使い方を学ぶ最初の段階なので、基本的なことを試しています。 HTTPリクエストを介してデータを交換する必要がある2つのNode Expressサービスを作成しました。
My 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
は request module を使用してservice 2
へのPOST要求を作成します。
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
});
この呼び出しの結果は次のとおりです。
{エラー:ECONNREFUSED 172.18.0.3:10010を接続}
Postmanを使用して、service2
をhttp://localhost:10010/api/
でテストし、実際に到達して期待どおりに動作することを確認できます。
何かが足りないのですが、わかりません。ここで何が問題になっていますか?
ドキュメントを参照 。ポート10010はホストポートですが、コンテナポートではありません。 service2
コンテナに直接アクセスする場合は、9000を使用する必要があります。
したがって、"http://service2:10010/api/"
を"http://service2:9000/api/"
に変更するだけで機能します。