V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
raw0xff
V2EX  ›  Docker

docker compose 如何扩容自动分配端口?

  •  
  •   raw0xff · 80 天前 · 812 次点击
    这是一个创建于 80 天前的主题,其中的信息可能已经有所发展或是发生改变。

    version: "3" services: nginx: image: nginx:1.19.9-alpine restart: always ports: - 55300-55399:80

    当“$ docker compose up --scale nginx=5 -d”后,只会多 run 一个 nginx ,其他只是 created ,其他说端口冲突。如何批量增加服务,端口范围也给了呀,为啥一直冲突。

    raw0xff
        1
    raw0xff  
    OP
       80 天前
    ```yaml
    version: "3"
    services:
    nginx:
    image: nginx:1.19.9-alpine
    restart: always
    ports:
    - 55300-55399:80
    ```
    ruidoBlanco
        2
    ruidoBlanco  
       80 天前
    把端口那行双引号试试?"55300-55399:80"
    THESDZ
        3
    THESDZ  
       80 天前
    应该不支持吧
    根据你的目的,个人的建议是 起 5 个 不同的 services nginx1~nginx5,分别绑定不同的端口。
    raw0xff
        4
    raw0xff  
    OP
       80 天前 via iPhone
    @ruidoBlanco 试了,不行

    @THESDZ 需要的不知五个,基本是五个一组,需要七八个组。不能 scale 的话会很麻烦。

    现在的问题应该是他不是挨个自动分配端口启动,而是一次性启动,那么每次启动到第二个就会端口冲突,导致每次执行 up 只能启动一个。
    THESDZ
        5
    THESDZ  
       79 天前
    @raw0xff #4 这种有规则的能麻烦到哪里去,大不了写个 shell 脚本呗。
    raw0xff
        6
    raw0xff  
    OP
       79 天前 via iPhone
    @THESDZ 那 scale 只能扩容不固定端口的容器?端口是可以设置范围的,是我是用的姿势不对吗?
    THESDZ
        7
    THESDZ  
       79 天前
    @raw0xff #6 不通过 docker service scale 去做,写一个 shell 脚本,根据传入的 参数(副本数),伸缩 serivce
    例如 传入 3 则将 nginx_4,nginx_5... docker scale 到 0 nginx_1,nginx_2,nginx_3 scale 到 1
    raw0xff
        8
    raw0xff  
    OP
       79 天前 via iPhone
    @THESDZ 感谢,可行,就是麻烦点
    ruidoBlanco
        9
    ruidoBlanco  
       79 天前
    网上查了下,大概你需要用 version: "2"。up 的时候需要用--compatibility ,看图。

    https://imgur.com/h9mvxGU
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2040 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 04:54 · PVG 12:54 · LAX 21:54 · JFK 00:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.