Docker compose-实现多服务、nginx负载均衡、--scale参数解决端口冲突问题

news2024/12/26 15:58:56

Docker compose-实现多服务、nginx负载均衡、--scale参数解决端口冲突问题

  • 问题:scale参数端口冲突
  • 解决方法:nginx实现多服务、负载均衡
    • 修改docker-compose.yml配置
    • 新增nginx本地配置文件
    • 验证
      • 启动容器
      • 查看容器状态
      • 访问web应用

问题:scale参数端口冲突

当使用如下docker-compose.yml配置,启动web为3个服务时,会出现端口冲突问题:

version: '3'
services:
  web:
    build: ../
    ports:
     - "5000:5000"
  redis:
    image: redis:3.0.7

启动命令:

docker-compose up --scale web=3

分析,ports: -“5000:5000”,主机5000端口映射到容器内的5000端口,如果多个启动容器,就会出现端口真占用冲突的问题

解决方法:nginx实现多服务、负载均衡

注意:原始项目构造请看Docker Compose的安装教程、使用教程示例的使用教程。

修改docker-compose.yml配置

如下:

version: '3'
services:
        web:
                build: ../
                expose: 
                        - "5000"
        redis:
                image: redis:3.0.7
        ngixn:
                image: nginx:latest
                volumes:
                        - ../nginx_conf/nginx.conf:/etc/nginx/nginx.conf:ro
                ports:
                        - "4000:4000"

对比上面的2个docker-compose.yml,修改的地方在于:

  • web服务去掉ports参数,改为expose参数,解释:web容器内的5000端口不对主机开放,但是对关联的其他服务容器开放,其他容器可以访问web容器的5000端口
  • 增加nginx配置
    • valumes:挂载数据卷,将../nginx_conf/nginx.conf文件挂载到容器内的/etc/nginx/nginx.conf文件,nginx容器将以../nginx_conf/nginx.conf启动nginx
    • ports:主机4000端口映射到nginx容器内的4000端口

新增nginx本地配置文件

在目录../nginx_conf/下新增nginx.conf文件,如下:

user  nginx;

events {
    worker_connections   1000;
}

http {
        server {
              listen 4000;
              location / {
                proxy_pass http://web:5000;
              }
        }
}

监听容器的4000端口,将请求转发到web服务的5000端口

验证

启动容器

docker-compose up --scale web=3

输出如下:
在这里插入图片描述
容器启动正常

查看容器状态

docker ps

如下
在这里插入图片描述
可以看到,3个web容器的5000端口如预期一样,没有开放给主机,主机4000端口映射到nginx容器内的4000端口。

访问web应用

访问虚机的4000端口,按照预期将会看到出现3个不同的容器名,如下
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

总结:Docker compose通过nginx实现了多服务、负载均衡场景,并不会出现端口冲突问题!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/462943.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《二》HTTP 请求报文和响应报文、请求方法、状态码

请求报文和响应报文: 请求报文: 客户端向服务器发送的请求信息,就叫做请求报文。 客户端发送一个 HTTP 请求到服务器,请求信息包含四部分:请求行、请求头、空行、请求体。 请求行:包含三部分,分别是请…

查看库文件是32位还是64位|查看lib是静态库还是导入库|判断是debug模式还是release模式

文章目录 dll位数查看lib位数查看查看lib库是静态库还是导入库dll库文件信息查看lib库文件内容查看dll库查看编译模式是debug还是release方法一方法二方法三 lib静态库查看编译模式是debug还是release方法一方法二 lib导入库查看编译模式是debug还是release查看Linux下的.a库&a…

ROS学习第十五节——常用API(C++)

由于时间问题,从这一节开始只记录C实现效果,加油 以下附上这一节调试用的程序 https://download.csdn.net/download/qq_45685327/87708069 1.初始化函数 void init(int &argc, char **argv, const std::string& name, uint32_t options 0); …

openEuler NFS+协议全新发布:实现NAS存储性能与可靠性倍增

4月21日,在openEuler Developer Day 2023上,openEuler发布NFS协议,实现单客户端访问NAS存储可靠性提升3倍、性能提升6倍,助力NAS存储全面满足新型生产核心场景下苛刻要求。 传统NFS面临挑战 网络文件系统(NFS&#xf…

vue打包如何开启gzip压缩

文章目录 场景gzip压缩有两种方案:个人实践 场景 本人前端打包的js达到了6.9M,导致网站加载很慢,想了下可以用gzip的方式压缩,减少文件大小。 “前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默&#xff0c…

什么蓝牙耳机好?测评达人精选五款性价比高蓝牙耳机推荐

用蓝牙耳机听歌、刷视频、玩游戏已经成为趋势,有线耳机已经逐渐被取代,但蓝牙耳机价格跨度大,品牌和型号也非常多,究竟什么蓝牙耳机好?我作为测评员这几年已经体验过五十款蓝牙耳机,今天就来总结五款性价比…

模仿网易云音乐黑胶唱片的交互实现

今天在 .NET MAUI 中我们来实现这个交互效果,先来看看效果: 使用.NET MAU实现跨平台支持,本项目可运行于Android、iOS平台。 创建页面布局 项目模拟了网易云音乐的播放主界面,可播放本地音乐文件。使用MatoMusic.Core作为播放内…

ChatGLM ptuning predict(预测)为空值的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

html学习(布局方式(layout)、浮动(float)、定位(position)、弹性盒(flex))

布局方式(layout) 文档流 文档流(normal flow) 文档流通俗的讲,就是一个web页面中,每一个模块只能从上到下从左往右的方式排列在页面上。 将窗口自下而上分成一行一行,应在每行中按从左至右的依次排放元素&#xff0…

[ZJCTF 2019]EasyHeap-patchlibc-调试

1,三连 主要功能: 1、malloc申请chunk 2、修改chunk内容 3、free chunk 4、exit 堆题多看一个libc信息: 2,IDA分析 2.1、malloc申请chunk heaparray[i]:存放 chunk 的地址。read_input(heaparray[i], size):向 chunk 写入 s…

亚马逊云科技宣布四大举措,全方位赋能创新成长企业

4月13日,以“加速创新,成就未来”为主题的亚马逊云科技创新成长中国行深圳论坛圆满举行。会上亚马逊云科技宣布,将围绕创新成长企业的三大业务需求——云上创新、出海拓展、业务加速,提供行业聚焦、技术支撑、伙伴扶持、人才培养四…

ENVI5.3 自动配准流程化工具(Image Registration Workflow)配准方法流程

ENVI5.3 自动配准流程化工具(Image Registration Workflow)配准方法流程。 打开 ENVI软件中的Image Registration Workflow工具,分辨打开参考图像和待校正的图像。 Base Image File是参考图像,参考图像的范围应比待校正图像的范围…

LaTeX论文自动化排版

本文介绍了一些论文写作的在线课程,方便读者朋友们自学,提高论文写作的能力。论文写作的在线课程非常多,读者朋友们也可以在网上自行搜索,选择适合自己的在线课程进行学习。如需要打开课程的网站,请复制课程的网址到浏…

威胁行为者针对云中的常见漏洞

Palo Alto Networks 已发布其第 42 单元云威胁报告的第 7 卷。该报告调查了 1300 多家组织。它分析了所有主要云服务提供商 (CSP) 的 210000 个云帐户、订阅和项目中的工作负载,为安全领导者和从业者提供了云安全的多方面视图。 云迁移的速度从 2021 年的 3700 亿…

Codeforces Round 867 (Div. 3) (E-G)

Problem - E - Codeforces (1)题目大意 给你一个字符串,问你让字符串每一对相对应位置都不同的最小操作数是多少?(A[i]和A[n - i],A[i 1]和A[n - i - 1]) (2)解题思路 1.首…

数据库基础篇 《16.变量、流程控制与游标》

数据库基础篇 《16.变量、流程控制与游标》 1. 变量 在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果数据。 在 MySQL 数据库中,变量分为系统变量以及用户自定义变量。 1.1 系统变量 1…

深度学习入门:多层感知机实现异或门

文章目录 前言感知机2层感知机实现异或门总结参考文献: 前言 最近又开始看深度学习的内容了,好久不用忘得差不多了,先从最简单的感知机入手了,这里记录下用2层感知机实现异或门。 感知机 什么是感知机呢?这里粗浅的介…

初步了解c语言(三)

注:此篇文章仅限初步了解,本小白后续会持续进行详解。 目录: 函数数组数组的定义数组的下标 操作符常见关键字关键字static的使用修饰局部变量修饰全局变量修饰函数 关键字register的大概了解#define定义常量和宏结构体💞结尾 函数…

RuntimeError: “LayerNormKernelImpl“ not implemented for ‘Long‘解决方法

问题出现的场景: 输入: import torch import torch.nn as nn atorch.randint(10,[3,4]) # atorch.DoubleTensor(a) # aa.double() print(a) layer_normnn.LayerNorm(4) layer_norm(a) 我就是想测试一下经过layernorm之后的输出会变成什么样 但是报错…

Pycharm中如何安装 OpenAI ——ChatGPT的python包?

本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 Pycharm中如何安装 OpenAI ——ChatGPT的python包? 摘要背景安装1、安装前准备2、安装前提条件3、依赖库 最佳安装过程1、检查 VC2、看哪些依赖库未安装3、将未装模块写成 test02.b…