在docker

时间:2015-07-02 16:41:10

标签: docker dockerfile

我们正在开发一个相当复杂的应用程序,它有一个与CouchDB实例对话的节点服务器,另一个与redis实例对话的节点服务器,与两个其他节点服务器对话的第三个节点服务器,以及一个Redis商店。这三个人都在谈论。

在本地开发需要安装和运行CouchDB,两个redis实例和三个节点应用程序。这确实不是问题,但我们希望开发人员能够进入项目并立即开始开发而没有太大的进入障碍。我想创建一个运行所有这些东西的docker容器,这样他们就可以构建并运行它并开始开发而没有任何麻烦。

我正在阅读Docker best practices文档,它提到您应该每个容器只运行一个进程 - 实际上我们有六个进程。它建议使用容器链接依赖服务,但在这种情况下,你似乎仍然需要六个独立的docker容器/实例,并且必须自己运行它们然后链接它们。我想进一步简化这一点。

是否有一个标准用于创建多个Dockerfiles的repo,它们都互相交互。是否有一种简单的方法可以同时链接,运行和构建它们?这是一个好主意,或者使用supervisor在一个容器中运行所有这些流程会更好吗?

1 个答案:

答案 0 :(得分:1)

你想要的是Docker-Compose(以前的图),它可以让你协调多个容器的创建和链接。还有其他方法可以做到这一点,但Compose是"官方"得到最多关心的方式。

你基本上可以让它创建你想要的东西并为你处理链接,所以一个简单的#34; docker-compose up -d"和#34;码头组成停止"将是您的开发人员需要开展的大部分工作。

至于管理多个Dockerfiles,你应该在构建它们之后将它们提交给Docker Hub。从那里,你的docker-compose.yml可以将每个图像拉到开发者机器。您还可以重新使用官方存储库,而不是编写自己的Dockerfiles,只需使用通过Compose传入的ENV变量进行自定义即可。例如,Official Redis Image甚至可以接受自定义的redis.conf文件,而无需您自己的自定义图像/容器。