docker-compose per microservice in local and production enironments?

我希望能够在本地开发微服务,而且能够以最less的configuration更改将其“推”到生产中。 我曾经把所有的微服务放到一个docker-compose , 但我开始看到这可能不是实际的。

新的想法是每个服务都有一个docker-compose。 这并不意味着它只能运行一个容器; 它可能有更多的内部(像一些数据存储等)。

从这个新的angular度来看,让我们来看看着名的docker投票应用程序示例 ,它由5个组件组成:

  • P )Python webapp让你在两个选项之间投票
  • R )Redis队列,收集新的选票
  • J )Java工作者消耗票并将它们存储在…
  • S )由Docker卷支持的Postgres数据库
  • N )Node.js webapp实时显示投票结果

假设你想把这个例子推入生产(所以只有一个docker-compose不是一个选项:)。 不要忘记,更多的基础设施相关的组件可能会被添加(比如kibana,prometheus …)。 我们希望能够扩展我们所需要的; 我们使用eg群。

问题是:

  • 如何组织这个例子:在单一的docker-composes或许多?
  • 我们在这里有什么微服务? 换句话说,你将哪些组件组合成单个docker-compose ? 例如: JS
  • 如果服务不是单一的docker-compose,那么我们将它们添加到同一个覆盖networking来使用群集DNSfunction?
  • 等等…

(我不需要关于如何安装的细节,这个问题是关于顶层组织的)

Docker Compose主要用于定义不同的容器,configuration和使用单个命令使它们可用(也用于sorting)。 所以它最适合本地开发,集成testing,并将其作为持续集成过程的一部分。

虽然不排除Docker组合可以在生产环境中使用,但我认为使用Kubernetes可以更好地控制缩放,pipe理多个容器。

这个博客有一些示例场景可供尝试(以及其他许多可能有用的资源)

https://renzedevries.wordpress.com/2016/05/31/deploying-a-docker-container-to-kubernetes-on-amazon-aws/comment-page-1/#comment-10