如何configurationDocker容器/应用程序列表来运行?

什么是Docker的指定到Docker Engine或Docker的本地机制构成应用程序列表(因此,通过compose.yml ,容器)在给定的主机上运行?

说明性的情况

我想要一个给定的主机运行所有必需的容器为Web应用程序AB. 假设AB都需要数据库实例,但不一定需要单独的实例。 A和B每个都有独立的Git仓库, compose.yml定义了一个compose.yml ,并且容器可用。

当前的解决scheme:使用撰写

创build一个指定这个configuration的compose.yml是可能的(也相当简单)。 实际上,很多Docker Compose的设施似乎都被明确地创build来支持这样的场景。 例如,我们可以指定:

  • app_a连接到名为db的主机上的数据库的应用程序容器。
  • app_b B应用程序容器,它连接到名为db的主机上的db
  • database容器链接到app_aapp_b作为db
  • 运行Apache / Nginx /等的web容器。 做主机名级HTTP代理到适当的应用程序容器

所有这三个都被restart:always确保它们已经启动,并且使用操作系统内置的监视工具( systemd等)来监视docker进程。

为什么这不像预期的解决scheme呢?

尽pipeDocker Compose的工具集非常适合这个任务,但Docker的文档讨论了每个应用程序的 compose.ymlconfiguration。 假设每个应用程序的compose.yml只指定该应用程序需要什么,指定每个应用程序必须启动自己的数据库,前端Web服务器等,似乎很尴尬。

据推测,在每个主机只运行一个应用程序的情况下,这不是问题。

其他Docker工具

纵观Docker Machine ,它似乎是创build主机的工具,而不是每个主机的configuration工具。 同样,Docker Swarm看起来像简化了多个主机上的运行操作,而不是指定在主机上运行的应用程序。

当然,Docker可能会考虑范围之外的问题,并让厨师木偶等东西来解决这个问题。 这是令人沮丧的,因为如何完美的Docker Compose能够描述和运行configuration。

在Docker中有没有更好的工具或机制? 我误解了上述工具之一,它解决了这个问题吗? Docker认为这是超出范围吗?