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

我遇到一个挺严重的问题:在本地跑得好好的代码,放到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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值