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

如何使用docker compose运行同一服务的多个实例?,docker,docker-compose,Docker,Docker Compose,我想运行在某个端口上运行的docker image的3个实例。我希望所有3个实例的端口都向主机公开。我希望能够控制哪些主机端口映射到容器 首先,我尝试在docker-compose.yml中创建3个不同的服务。这是可行的,但并不可取 其次,我在docker-compose.yml中创建了一个服务 然后我试图通过环境变量控制暴露的端口。但是当我创建第二个容器时,docker会删除我创建的第一个容器 我无法使用scale选项,因为它将暴露的端口映射到主机上的随机端口 myservice: i

我想运行在某个端口上运行的docker image的3个实例。我希望所有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"

您可以将端口范围设置为与
compose
scale
选项一起使用:

ports: - "8011-8013:8011"
启动它:

docker-compose up --scale myservice=3

然后容器将使用端口
8011
8012
8013

看起来你想扩展你的应用程序,对吗?Docker swarm或Kubernetes似乎更适合您的需要