通过docker-compose

时间:2016-10-08 22:26:55

标签: docker docker-compose

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

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

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

默认docker-compose行为的问题是,如果处理与正在运行的文件夹相关的所有相对路径。因此,如果您从上面的示例转到dir并运行

docker-compose up -f app1/docker-compose.yml -f app2/docker-compose.yml
如果你docker-compose.yml中的任何一个使用env文件的相对路径或其他任何内容,那么你最终会失去运气。

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

  1. 单独运行这些应用,并使用网络。
  2. 完整地描述了Communication between multiple docker-compose projects

    我刚刚测试过,它确实有效。缺点:

    • 您必须在docker-compose.yml中提及网络,并在某天将其推送到存储库,使整个应用程序无法运行,而无需发布网络的应用程序。

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

    2使用绝对路径。嗯,这很糟糕,不需要任何详细说明。

    3在主机上公开您需要的端口,让它们与主机通话,而不必了解彼此之间的事情。显然,那也许。

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

1 个答案:

答案 0 :(得分:0)

感谢大家的反馈意见。在我们的团队中,我们同意以下解决方案:

使用网络&覆盖

长话短说,原来的docker-compose.yml不应该有所改变。您所要做的就是在它附近设置docker-compose.override.yml,它会发布网络并将您的服务挂钩到其中。

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

docker-compose -f docker-compose.yml up

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

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