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

Dee*_*Kar 3 docker docker-compose

我想运行 3 个在某个端口上运行的 docker 镜像实例。我希望所有 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"
Run Code Online (Sandbox Code Playgroud)

Lin*_*nPy 5

您可以设置端口范围以使用以下scale选项compose

ports: - "8011-8013:8011"
Run Code Online (Sandbox Code Playgroud)

启动它:

docker-compose up --scale myservice=3
Run Code Online (Sandbox Code Playgroud)

然后容器将使用 port 80118012并且8013