【问题标题】:java.net.UnknownHostException - Zuul and Eureka not working inside Dockerjava.net.UnknownHostException - Zuul 和 Eureka 不能在 Docker 中工作
【发布时间】:2019-10-26 16:56:03
【问题描述】:

我一直在尝试在 Docker 结构上验证我的微服务,在该结构中我通过链接容器连接所有内容,但在尝试使用 Zuul 通过 API 网关时没有成功。

基本上我有这些微服务:

  • 配置服务器
  • 精品-eureka-server
  • api 网关
  • 产品-服务

所有这些都以成功开始,但我无法访问 api-gateway 的产品服务。

我的代码都在:

https://github.com/kalilmvp/myboutique/

以及我使用过的 docker 命令。

错误通常是:

com.netflix.zuul.exception.ZuulException: Forwarding error

在我后来的测试中,我也遇到了这个错误:

Caused by: java.lang.RuntimeException: java.net.UnknownHostException: product-service

可以在分支docker

上查看

【问题讨论】:

  • 但是没有docker的微服务在eureka服务器上注册好了吗?因为通过检查您的客户端配置,我没有看到您向他们提供 eureka 服务器的地址。
  • 嗨@FrancescRecio,是的。此问题仅在使用 Docker 时发生。我会把地址放在哪里?因为我确实在 application.yml 上进行了这样的配置,它被所有其他配置继承:eureka:client:serviceUrl:defaultZone:${SERVICE_URL_DEFAULT_ZONE}

标签: spring spring-boot docker netflix-eureka netflix-zuul


【解决方案1】:

Docker 建议不要使用--link 选项来链接容器,因此不推荐使用docker run 的此开关。

创建端到端链接存在许多问题,例如环境变量在两个链接容器之间共享(例如,想象 JAVA_HOME 的不同值)。

尝试使用 docker compose 协调您的服务或使用 docker 定义网络:

$ docker network create my-net
$ docker create --name my-eureka --network my-net --publish 8888:80 eureka:latest
...
$ docker network disconnect my-net my-eureka

查找更多信息in the docker docs

【讨论】:

  • 嗨@diginoise,感谢您的回答。是的,我曾考虑过使用 docker-compose,但首先是想弄清楚这一点。考虑到不再建议使用 --link-- ,我最好尝试不同的方法。我会尝试,并会回来更新。再次感谢!
  • @KalilPeixoto 没问题,祝你好运!哦,如果您喜欢它,也可以随时为答案投票;)
  • 我已经尝试过 docker compose 解决方案,但我遇到了一个问题。我只配置了 3 个服务,即使在最后 2 个服务中我将依赖项放在第一个,它们都同时启动。这造成了连接错误,导致配置服务器尚未启动。我使用等待脚本找到了一个“解决方案”,但我只是不喜欢它。我只是没明白,如果你定义你的服务依赖于第一个,它应该等待它,不是吗?
猜你喜欢
  • 2019-07-24
  • 1970-01-01
  • 2018-08-30
  • 1970-01-01
  • 2020-11-22
  • 1970-01-01
  • 2019-08-04
  • 1970-01-01
  • 2017-09-15
相关资源
最近更新 更多