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

2022-07-18 04:31:58 +08:00
 raw0xff

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 ,其他说端口冲突。如何批量增加服务,端口范围也给了呀,为啥一直冲突。

1458 次点击
所在节点    Docker
9 条回复
raw0xff
2022-07-18 04:45:03 +08:00
```yaml
version: "3"
services:
nginx:
image: nginx:1.19.9-alpine
restart: always
ports:
- 55300-55399:80
```
ruidoBlanco
2022-07-18 06:15:27 +08:00
把端口那行双引号试试?"55300-55399:80"
THESDZ
2022-07-18 10:51:46 +08:00
应该不支持吧
根据你的目的,个人的建议是 起 5 个 不同的 services nginx1~nginx5,分别绑定不同的端口。
raw0xff
2022-07-18 12:00:25 +08:00
@ruidoBlanco 试了,不行

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

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

https://imgur.com/h9mvxGU

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/866873

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX