Я нахожусь на первом этапе обучения использованию докеров, поэтому я пробую основные вещи. Я создал два сервиса Node Express, которым необходимо обмениваться данными через HTTP-запросы.Докеры 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
использует request module сделать POST-запрос на service 2
.
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}
Использование почтальона я могу проверить service2
на http://localhost:10010/api/
и я могу подтвердить, что они на самом деле могут быть достигнуты и работать, как ожидалось.
Мне ничего не хватает, но я не могу понять это. Что здесь происходит?
+ вам нужно связать контейнер с другим –
@JohannesMerz Он использует сети, и он получил разрешение «service2» как «172.18.0.3». –
Я использую сети, поэтому связывание не должно быть необходимым, если использовать внутренний порт контейнера, который разрешил мою проблему. – Gavello