Невозможно подключиться к микросервису через шлюз API ZUUL в docker

#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 =».