通过docker-compose运行几个应用程序

我们正试图通过docker-compose运行两个应用程序。 这些应用程序(显然)在单独的文件夹中,每个都有自己docker-compose.yml 。 在文件系统上看起来像这样:

 dir/app1/ -... -docker-compose.yml dir/app2/ -... -docker-compose.yml 

现在我们需要一种方式来组合这些人,因为他们通过http进行了一些基本的整合。

默认docker-compose行为的问题是,如果所有的相对path相对于它正在运行的文件夹。 所以,如果你从上面的例子中转到dir并运行

 docker-compose up -f app1/docker-compose.yml -f app2/docker-compose.yml 

如果任何docker-compose.yml使用相对path来设置env文件或其他任何东西的话,那么你最终会走运。

下面是实际工作方式的列表,但有其缺点

  1. 分别运行这些应用程序,并使用networking。

在多个docker-compose项目之间的沟通中对此进行了充分的描述

我已经testing过,现在就起作用了。 缺点:

  • 你不得不在docker-compose.yml提到networking,并在docker-compose.yml将其推送到存储库,从而在没有发布networking的应用程序的情况下使整个应用程序无法运行。

  • 你必须想出一些聪明的方法让这些应用程序实际上等待对方

2使用绝对path。 那么,这是不好的,不需要任何阐述。

3将你需要的端口暴露在主机上,让他们与主机交谈,而不必知道彼此的事情。 这太明显了,呃。

所以,问题是:如何用docker-compose来pipe理任务?

感谢大家的反馈。 在我们的团队中,我们已经同意以下解决scheme:

使用networking和覆盖

长话短说,你原来docker-compose.yml不应该改变一下。 所有你需要做的就是在它附近build立docker-compose.override.yml ,它发布networking并把你的服务挂接到它。

所以,谁想要有一个独立的应用程序运行

 docker-compose -f docker-compose.yml up 

但是当你需要并行运行应用程序并相互通信时,你应该去做

 docker-compose -f docker-compose.yml -f docker-compose.override.yml up