【问题标题】:How to run multiple instances of the same service with docker compose?如何使用 docker compose 运行同一服务的多个实例?
【发布时间】:2020-01-09 03:51:29
【问题描述】:

我想运行 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"

【问题讨论】:

  • 看起来您想扩展您的应用程序,对吗? Docker swarm 或 Kubernetes 似乎更适合您的需求。
  • 我删除了Java标签,因为它与qestion无关

标签: docker docker-compose


【解决方案1】:

您可以使用composescale 选项设置要使用的端口范围:

ports: - "8011-8013:8011"

开始吧:

docker-compose up --scale myservice=3

那么容器将使用端口801180128013

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    相关资源
    最近更新 更多