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-alpinecontainer_name: "web"networks:app-networks:aliases:- "aaa.com"- "bbb.com"back-networks:aliases:- "aaa.com"- "bbb.com"


正如上图 , 我在php容器中 aaa.com 项目代码通过curl请求bbb.com项目,是可以形成访问链路的,但是也可以看到,这个链路很长, 造成了我一旦数据量过大,对网络的开销成倍增长.
所以此路不通

解决方案:
不同的项目,新增不同的php容器,要是有大佬有更好的解决方案,请评论

【docker同容器下多项目curl 调用网络死循环问题记录】相关推荐

  1. docker中容器与宿主机之间的网络关系

    接上一篇jupter远程访问 docker中容器与宿主机之间的网络关系 一.PC上的网络关系 1.网卡的物理地址 网卡的物理地址(MAC地址):是网卡的唯一标识.由生产厂商写入网卡中.MAC地址就如同 ...

  2. 【5分钟系列】搭建基于docker环境搭建下springboot-mysql项目框架

    在云时代,开发者创建的应用必须要能很方便地在网络上传播,也就是说应用必须脱离底层物理硬件的显示:同时必须是"任何时间任何地点"可获取的.我们通常想要快速搭建一个项目框架,数据库的环 ...

  3. docker的容器下使用apt-get update卡在[0%] Working问题解决办法

    环境: 服务器: Ubuntu 20.04.2 LTS docker镜像 :Ubuntu 16.04.3 LTS 查看docker镜像系统版本号方法:使用docker exec 命令进入交互式命令行后 ...

  4. docker简介和安装(阿里云加速)以及Springboot项目部署docker,实现局域网下同时访问项目(详细过程)

    文章目录 关于Docker: Docker简介 Docker优势 Docker的基本组成 Docker安装: Springboot项目部署到Docker 实现局域网内多台电脑可以访问 关于Docker ...

  5. MAC下oracle默认超级管理员账户密码docker作为容器权限不足问题

      电脑是Mac,使用docker作为容器,安装的是oracle 11g    Mac下默认的用户名和密码 sys超级用户密码添后缀 sqlplus system/oracle sqlplus sys ...

  6. docker开放容器端口_开放式容器项目及其含义

    docker开放容器端口 昨天,旧金山宣布了开放容器项目 . 这是一个Linux Foundation项目,它将包含使用软件容器的规范和基本运行时软件. 这就是"一件好事". 签署 ...

  7. 【云服务器】基于docker容器部署Halo项目的个人博客搭建并部署到云服务器

    目录 1 docker快速部署halo个人博客 2 主题设置(本文使用的是M酷Joe 2.0版本的主题,下载链接放在下面了) 2.1 API报错解决方案 2.2 首页分栏设置 2.3 轮播图的修改 2 ...

  8. Docker容器下Redis/ES/RabbitMQ/MongoDB/FastDFS启动命令总结

    docker 部署etcd Etcd:一个分布式的k-v存储服务 Etcd官网https://etcd.io/ etcd安装 1. 拉取bitnami/etcd镜像 docker pull bitna ...

  9. linux容器进程号,linux下docker启动容器,查看容器、进程、日志等命令

    运行容器:docker run -it 镜像名 /bin/bash 退出容器:exit 或者 Ctrl+P+Q 查看所有容器:docker ps -a 查看运行的容器:docker ps 重启容器:d ...

最新文章

  1. 在Ubuntu 16.04.6 LTS升级python 3.5.x到3.7.3之后导致gnome-ternimal无法打开的解决办法
  2. MobileNetv2优化问题
  3. android开发--翻转闹铃(从制作到打包)
  4. PyOpenCV 基本操作
  5. myeclipse读取mysql表中数据_在myeclipse中连接mysql查询数据
  6. 《解决微信内置浏览器返回上一页强制刷新问题方法》
  7. Codeforces 869C The Intriguing Obsession
  8. 用vSphere Client去建立虚拟机报MKS的错
  9. iOS14.7 验证失败,因为您不再连接到互联网
  10. 草稿 22.10.10 !!!!!! YUYU
  11. 关于MMO游戏服务器从零开发基本内容介绍
  12. 村长选举c语言程序,菜鸡学C语言之摸鱼村村长
  13. java pdf 图片_java实现PDF转图片的方法
  14. oracle角色数达到上限,ROLE启用个数限制
  15. java保姆级教程—— 1.什么是游戏
  16. 高中心理健康教育教师资格证经验贴
  17. GNOME Shell加速演进:BoxPointer, AppMenu和Magnifier
  18. Hive ,Hsql行转列、列转行实现
  19. python读数据库的通信协议是_Python以太坊区块链交互将数据存入数据库
  20. 备注: ubt 16.04 安装 gtx 1060 --- 成功运行 tensorflow - gpu

热门文章

  1. PyTorch(13)---优化器_随机梯度下降法
  2. 努比亚 更新服务器设置在哪个文件夹,努比亚nubia Z7 mini官方系统升级更新教程和方法...
  3. 2021-08-18 关于PC与ipad的远程控制
  4. python小工具—图片转为字符txt
  5. 戒梭先生:随笔|合格交易者要达到的三个境界
  6. 适用于主流浏览器导出Excel表格的代码
  7. √ JavaSE - 02.怎么打印回形数
  8. Aspose.Words 将Word(DOC / DOCX)转换为HTML教程
  9. 智慧灯杆(路灯)控制系统平台架构的主要设备有哪些?
  10. 采用Fuel Gauge可能出现的几种电量现象及解释