Вы изменили имя хоста контейнера консула, однако служба rs
не знает об этом и пытается разрешить abc
, запрашивая DNS-сервер по умолчанию, 127.0.0.11
порт 53
. Вы можете увидеть это в сообщении об ошибке, так как этот DNS-сервер не может разрешить abc
, поскольку у него нет информации об этом.
Самый простой способ решить эту проблему и заставить его работать в docker -compose в сети, созданной между службами в docker -compose, следующее:
version: '3'
services:
rs:
build: .
# image: aline:3.7
ports:
- "9090:9090"
# command: sleep 600
networks:
rs-consul:
consul:
image: "consul"
ports:
- "8500:8500"
hostname: "abc"
networks:
rs-consul:
aliases:
- abc
networks:
rs-consul:
Это создаст новую сеть rs-consul
(проверьте с помощью docker network ls
, у нее будет некоторый префикс, у моего был working_directory_name_
в качестве префикса). И в этой сети машина Consul имеет псевдоним abc
. Теперь ваша служба rs
должна иметь возможность обращаться к службе Consul через http://abc:8500/
. Я использовал закомментированные строки (image:alpine:3.7
и command: sleep 600
) вместо build: .
, чтобы проверить соединение, так как я У вас нет rs
сервисного кода для использования в build:
. После запуска контейнеров я использовал docker exec -it <conatiner-id> sh
для запуска оболочки на rs
контейнере, затем установил curl
и смог получить страницу пользовательского интерфейса Консула с помощью следующей команды:
curl http://abc:8500/ui/
Надеюсь, это поможет.