spring cloud gateway报错java.net.UnknownHostException: 4d59d509898a: Name or service not known

是这样的,eureka、gateway和普通的微服务在本地是OK的,

部署到docker后,通过gateway访问某个微服务就报错了。

用的是serviceId的方式,在eureka界面也能看到各个微服务都是在线的,没有问题,但就是通过gateway的路由访问时会报错。

解决方案如下:

在微服务里加上这个配置:

eureka:
  instance:
    prefer-ip-address: true

然后就OK了

估计是加上后,就把ip注册到eureka了,不加的话我看过eureka注册界面,是以docker容器的container id注册过去的,譬如container id为abcde,那么当访问该微服务时,eureka以http://abcde/xxx,去访问的,当然是访问不到该服务。配置上面的选项后,就会以内网ip加端口去访问就能访问到了。

那么为什么在本地环境是可以的呢?因为本地环境是localhost注册过去的,各个服务都能解析localhost,而docker不行,每一个docker都是独立的,把docker的container id注册过去,别的微服务是不认识的。

posted @ 2020-09-18 11:35  uzxin  阅读(2586)  评论(0编辑  收藏  举报