【docker同容器下多项目curl 调用网络死循环问题记录】
docker同容器下多项目curl 调用网络死循环问题记录 curl: (7) Failed to connect to port 80: Connection refused
·
docker同容器下多项目curl调用死循环问题记录
业务常景
记录一下在搭建新项目时遇到的一个有意思的问题,博主本机环境是自己构建的一个简单的docker-compose 环境,包含:
nginx容器,
php5.4容器,
5.4容器下包含两个项目(aaa.com,bbb.com,一架简称为: A ,B)
单独请求 A,B项目都没有问题
但是当我的项目A在容器内通过php curl请求时报错
curl: (7) Failed to connect to port 80: Connection refused
这个问题的原因很简单, 当nginx将请求转发至项目A后, 项目A在容器内发起curl请求,默认请求的是本容器内的80端口,但是本机80端口并没有联通nginx.
因为不能修改代码中的curl请求地址,只能用域名访问,同时容器中host绑定的话,也只能用ip 绑定域名.后经过多方查询资料后,我通过修改docker-composer.yml 文件,临时解决了这个问题, 解决方法:
创建两个网络段
docker network create --subnet=172.30.0.0/24 app-network
docker network create --subnet=172.30.0.0/24 back-network
nginx容器分配两个网段
version: "3"
services:
nginx:
image: nginx:1.10-alpine
container_name: "web"
networks:
app-networks:
aliases:
- "aaa.com"
- "bbb.com"
back-networks:
aliases:
- "aaa.com"
- "bbb.com"
正如上图 , 我在php容器中 aaa.com 项目代码通过curl请求bbb.com项目,是可以形成访问链路的,但是也可以看到,这个链路很长, 造成了我一旦数据量过大,对网络的开销成倍增长.
所以此路不通
解决方案:
不同的项目,新增不同的php容器,要是有大佬有更好的解决方案,请评论
更多推荐
已为社区贡献1条内容
所有评论(0)