spring cloud feign docker上无法通讯的问题

来源:互联网 发布:highcharts柱状图数据 编辑:程序博客网 时间:2024/05/08 08:35

我遇到一个挺严重的问题:在本地跑得好好的代码,放到docker的生产环境就完蛋了.
表现是程序A feign client调用,程序B的方法失败.
AB都在一个物理主机上.
在程序B的方法第一句打印日志,然后发现根本没进这个方法.
报错是这样的:

o.a.c.c.C…. Servlet.service() for servlet [dispatcherServlet] in context with path [/healthtimeWeb] threw exception [request processing failed; nested exception is com.netflix.hystrix.exception.HystrixRuntimeException: CourseFeignClient#getCourseDetail(Long) time-out and fallback failed.] with root case java.util.concurrent.TimeoutException:null ….AbstractCommand.java:980

设置了docker link 设置了
preferIpAddress: true
ip-address: 172.28.12.2 主机ip
client: healthcheck.enabled: true
registerWithEureka: true
fetchRegistry: true hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 15000

在docker容器A里pingB的物理机ip

docker exec -it A ping 172.28.12.2:xxx

是通的.
ping B的docker内网ip 172.0.xxx.xx的也是通的
如果说ping不能测端口那么docker内网ip不同啊也该ping 不通才对.

但是A就是调不了B的方法.

之后就是各种改程序配置.然并卵.

搞了两天又去看了docker网络结构的博客.这理论还是没什么用.但是偶然发现ping b的主机名不通.

docker-compose v2 external_links不知怎么没起到作用 改为depends_on,让容器名可以ping通就好了.
然后我又试了试ip-address的问题.不设最好.

1 0