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
? 例如: J和S ? - 如果服务不是单一的docker-compose,那么我们将它们添加到同一个覆盖networking来使用群集DNSfunction?
- 等等…
(我不需要关于如何安装的细节,这个问题是关于顶层组织的)
Docker Compose主要用于定义不同的容器,configuration和使用单个命令使它们可用(也用于sorting)。 所以它最适合本地开发,集成testing,并将其作为持续集成过程的一部分。
虽然不排除Docker组合可以在生产环境中使用,但我认为使用Kubernetes可以更好地控制缩放,pipe理多个容器。
这个博客有一些示例场景可供尝试(以及其他许多可能有用的资源)