同一网桥网络下Docker容器内axios无法向另一容器发送请求如何解决?
问题根因与解决方案
你代码中填写的请求地址错误:172.20.0.1是你自定义网桥csp_net的网关地址,并非你要访问的authentication服务的容器IP。
两种解决方式
- 方式一:使用固定IP访问
你的authentication容器在csp_net网络下分配的固定IP是172.20.0.6,直接修改test服务的axios配置即可:const options = { method: 'GET', url: 'http://172.20.0.6:80/user', }; - 方式二(更推荐):使用容器名DNS解析
Docker自定义网桥默认内置DNS服务,同网络下的容器可以直接使用对方的container_name作为域名访问,无需绑定固定IP,后续调整IP也不需要修改业务代码,修改配置如下:const options = { method: 'GET', url: 'http://authentication:80/user', };
可选排查步骤
如果修改后仍然无法访问,可按以下顺序排查:
- 进入test容器内部,执行
ping authentication或ping 172.20.0.6,确认网络层连通性 - 在test容器内执行
curl http://authentication:80/user,确认接口本身可以正常返回,排除服务启动异常、路径错误等业务层面问题 - 确认
authentication服务的Node.js进程监听地址是0.0.0.0:80,而非127.0.0.1:80,后者只能在容器内部访问,无法被同网络其他容器调用
内容的提问来源于stack exchange,提问作者Mohamed Abdelgaber
相关产品推荐
相关产品推荐

