gpt4 book ai didi

node.js - 容器之间的 Docker HTTP 请求

转载 作者:IT老高 更新时间:2023-10-28 12:43:03 25 4
gpt4 key购买 nike

我正处于学习如何使用 Docker 的第一阶段,所以我正在尝试一些基本的东西。我创建了两个需要通过 HTTP 请求交换数据的 Node Express 服务。

我的 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 moduleservice 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
});

这个调用的结果是:

{ Error: connect ECONNREFUSED 172.18.0.3:10010}

使用 postman ,我可以在 http://localhost:10010/api/ 测试 service2,我可以确认它们实际上可以到达并按预期工作。

我错过了一些东西,但无法弄清楚。这里出了什么问题?

最佳答案

See the document .端口 10010 是主机端口,但不是容器端口。直接访问 service2 容器时应该使用 9000。

所以只需将 "http://service2:10010/api/" 更改为 "http://service2:9000/api/" 即可。

关于node.js - 容器之间的 Docker HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39046413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com