如何使用docker compose运行同一服务的多个实例?

时间:2019-09-06 09:16:43

标签: docker docker-compose

我想运行3个在某个端口上运行的docker image实例。我希望将所有3个实例的端口公开给主机。我希望能够控制将哪些主机端口映射到容器。

首先,我尝试在docker-compose.yml中创建3个不同的服务。这行得通,但不是可取的。

第二,我在docker-compose.yml中创建一个服务 然后,我尝试通过环境变量控制暴露的端口。但是当我创建第二个容器时,docker会删除我创建的第一个容器。

我不能使用scale选项,因为它会将暴露的端口映射到主机上的随机端口。

myservice:
    image: myimage:latest
    container_name: service-${PORT}
    volumes:
      - ${DIR}:/data
    ports:
      - "${PORT:-8011}:8011"
      - "${ADMINPORT:-8012}:8012"

1 个答案:

答案 0 :(得分:1)

您可以设置要与scale的{​​{1}}选项一起使用的端口范围:

compose

启动它:

ports: - "8011-8013:8011"

然后容器将使用端口docker-compose up --scale myservice=3 80118012