Docker-Compose在不同端口上运行一个映像的多个实例

时间:2018-10-27 14:21:45

标签: docker docker-compose

我有一个python flask应用程序,我想在同一台服务器上拥有多个实例,每个容器都有自己的输出端口(或DNS)和依赖项。我使用了docker-compose,效果很好。 我看到了scale arg,但我认为这对负载平衡等应用程序版本不同是有好处的。我想到的另一种解决方案是为一个应用程序提供多种服务,并在终端中按其名称运行每个实例。

1 个答案:

答案 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个实例:1000010001,{{1} }和10002

我希望我回答了你的问题。