Я новичок в Spring Boot и Docker.Написаны следующие микросервисы.
- Служба регистрации пользователей : создание пользователей в базе данных MySql, а также взаимодействие с «Службой поиска и удаления» с использованием шаблона отдыха и его клиента Eureka.GitHub ссылка
- Служба поиска и удаления пользователей : Поиск и удаление из базы данных MySql и ее клиента Eureka.GitHub Ссылка
- Eureka Server : используется для обнаружения службы.GitHub Link
- Zuul Server : используется в качестве шлюза API и его клиента Eureka.GitHub Ссылка
Я использовал Spring Boot STS для разработки сервисов.Также использовал зависимость "Spotify" для создания образов докера.
Я могу запустить все службы из STS на localhost (windows), и все работает нормально.Все три упомянутые службы регистрируются на сервере Eureka.
Но все перестало работать, когда я выбрал докеризацию сервисов.Я создал четыре изображения докеров четырех сервисов.
Проблема: Запустил сервер Eureka и «Службу регистрации пользователей» в двух отдельных контейнерах, но служба не регистрируется в Eureka.На самом деле ни одна из служб не регистрируется в Eureka.
Что я сделал:
Попробуйте 1:
Ran the Eureka server and client using below commands:
dockerзапустите --rm -it - имя eurekaserver-container -p 8761: 8761 eurekaserver-alpine-linux
docker run --rm -it -d - имя пользователя-регистрации-контейнера -p 8081: 8081регистрация пользователя
Похоже, Eureka Client (служба регистрации пользователей) не может найти сервер Eureka.Я обнаружил, что сервер Eureka работает в контейнере с другим IP-адресом (172.0 ...), а клиент Eureka не может подключиться к серверу.
Попробуйте 2:
Запустил сервер Eurekaи клиент, используя следующие команды.Попытка связать два контейнера (Eureka Server и Client):
docker run --rm -it --name eurekaserver-container -p 8761: 8761 eurekaserver-alpine-linux
docker run --rm -it -d --name user-registration-container -p 8081: 8081 --link eurekaserver-container: eureka-server user-registration
Это тоже не удалосьработа.
Попробуйте 2 Ошибка
Попробуйте 3:
Запустите сервер и клиент Eureka с помощью приведенных ниже команд.Попытка передать имя хоста в образ Eureka, чтобы Клиент мог найти сервер Eureka, используя имя хоста.Также связаны два контейнера.
запуск докера --rm -it -d - имя eurekaserver-container -h discovery-eurekaserver.com -p 8761: 8761 eurekaserver-alpine-linux / bin /bash
docker run --rm -it -d - имя пользователя-регистрации-контейнера -p 8081: 8081 - ссылка eurekaserver-контейнер: регистрация пользователя eureka-сервера
Попытка 3 Ошибка
Это тоже не сработало.
Может кто-нибудь помочь мне понять, что я делаю неправильно? Что бы я ни делалклиенты Eureka не могут зарегистрироваться на сервере Eureka при работе в разных контейнерах.
Моя цель - запустить службы (сервер Eureka, службы приложений и т. д.) в разных контейнерах, и все службы будут регистрироваться.с сервером Eureka, чтобы я мог вызывать API из Postman или SOAP UI.