#spring-boot #docker #netflix-zuul
#весенняя загрузка #docker #netflix-zuul
Вопрос:
У меня есть следующие службы, и они работают нормально, когда они развернуты на локальном хосте (через eclipse). Но невозможно вызвать службу rest при развертывании в виде отдельных контейнеров docker.
Я новичок в docker и посещал учебные пособия, чтобы узнать, как это работает.
Следующие службы выполняются в отдельных контейнерах docker и настроены следующим образом (локальная среда)
Эврика
Docker IP : 172.17.0.3
Docker port mapping : 8761:8761
spring.application.name=naming-server
server.port=8761
Способ шлюза API Zuul
Docker IP : 172.17.0.4
Docker port mapping : 8765:8765
spring.application.name=gateway-server
server.port=8765
Пользовательская служба
Docker IP : 172.17.0.5
Docker port mapping : 8101:8101
spring.application.name=user-service
server.port=8101
Информация о зарегистрированных службах в Eureka
Статус зон доступности AMIs приложения
ПОЛЬЗОВАТЕЛЬСКАЯ СЛУЖБА n / a (1) (1) UP (1) — de4396a354ea: пользовательская служба: 8101
API-ШЛЮЗ n / a (1) (1) UP (1) — e5dd509065cd: api-шлюз: 8765
При попытке вызвать службу в «пользовательской службе» через шлюз возникает исключение
com.netflix.zuul.exception.ZuulException: Forwarding error
at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.handleException(RibbonRoutingFilter.java:198) ~[spring-cloud-netflix-zuul-2.2.0.RELEASE.jar!/:2.2.0.RELEASE]
at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.forward(RibbonRoutingFilter.java:173) ~[spring-cloud-netflix-zuul-2.2.0.RELEASE.jar!/:2.2.0.RELEASE]
Caused by: java.net.UnknownHostException: de4396a354ea: Name or service not known
at java.base/java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method) ~[na:na]
at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java:929) ~[na:na]
at java.base/java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1515) ~[na:na]
Примечание: «de4396a354ea» — это идентификатор контейнера для «Службы пользователя»
Пожалуйста, укажите, как решить эту проблему, а также предоставьте любые ссылки, по которым я могу получить больше информации о развертывании микросервисов в контейнерах docker.
Ответ №1:
Удалось решить эту проблему, добавив свойство «eureka.instance.hostname =».