我有一个python flask应用程序,我想在同一台服务器上拥有多个实例,每个容器都有自己的输出端口(或DNS)和依赖项。我使用了docker-compose,效果很好。
我看到了scale
arg,但我认为这对负载平衡等应用程序版本不同是有好处的。我想到的另一种解决方案是为一个应用程序提供多种服务,并在终端中按其名称运行每个实例。
答案 0 :(得分:4)
不推荐使用docker-compose scale
命令,并且文档建议您使用docker-compose up --scale SERVICE=NUM
。但是在指定用于扩展的端口时必须小心。如果您尝试将容器放在端口80
上五次,则五个中的四个将失败-该端口已被占用。但是有解决方案。
我刚刚测试了这种方法,并且有效。这是我测试过的docker-compose.yml
:
version: '3.7'
services:
test_app:
image: <my_custom_image>
ports:
- 10000-10003:80
然后我用docker-compose up --scale test_app=4
运行它,并在四个不同(但事先指定)的端口上部署了test_app
的4个实例:10000
,10001
,{{1} }和10002
。
我希望我回答了你的问题。