docker中无法通过ZUUL api网关连接微服务
Posted
技术标签:
【中文标题】docker中无法通过ZUUL api网关连接微服务【英文标题】:Unable to connect to micro service through ZUUL api gateway in docker 【发布时间】:2021-02-01 07:57:10 【问题描述】:当它们部署在 localhost(通过 Eclipse)时,我已经跟踪服务并且工作正常。但部署为单独的 docker 容器时无法调用其余服务。
我是新手,参加了教程以了解其工作原理。
以下服务在单独的 docker 容器中运行并配置如下(本地环境)
尤里卡
Docker IP : 172.17.0.3
Docker port mapping : 8761:8761
spring.application.name=naming-server
server.port=8761
Zuul API 网关方式
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 中的注册服务信息
应用程序 AMI 可用区状态
USER-SERVICE n/a (1) (1) UP (1) - de4396a354ea:user-service:8101
API-GATEWAY n/a (1) (1) UP (1) - e5dd509065cd:api-gateway: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”是“用户服务”的容器 ID
请指导如何解决此问题,并提供任何链接,以便我可以获取有关在 docker 容器中部署微服务的更多信息。
【问题讨论】:
【参考方案1】:可以通过添加“eureka.instance.hostname="属性来解决这个问题。
【讨论】:
以上是关于docker中无法通过ZUUL api网关连接微服务的主要内容,如果未能解决你的问题,请参考以下文章