我希望能够在本地开发微服务,但也希望以最少的配置更改将它们“推送”到生产环境中。docker-compose
我曾经在本地将所有微服务合二为一;但我开始看到这可能不实用。
新想法是每个服务有一个 docker-compose 。这并不意味着它将仅使用一个容器运行;它可能有更多内部(比如后面的一些数据存储等)。
从这个新的角度来看,让我们看一下著名的docker 投票应用程序示例,它由 5 个组件组成:
- ( P ) Python webapp,它可以让你在两个选项之间进行投票
- ( R ) 收集新选票的 Redis 队列
- ( J ) Java worker 消耗选票并将其存储在…</li>
- ( S ) 由 Docker 卷支持的 Postgres 数据库
- ( N ) Node.js webapp 实时显示投票结果
假设您想将此示例投入生产(因此只有一个docker-compose
不是一种选择:)。不要忘记,可能会在其之上添加更多与基础设施相关的组件(如 kibana、prometheus ......)。我们希望能够扩展我们需要的东西;我们使用例如swarm。
问题是:
- 如何组织这个例子:单个
docker-composes
还是多个? - 我们这里有哪些微服务?换句话说,您会将哪些组件组合成 single
docker-compose
?示例:J和S ? - 如果服务不在单个 docker-compose 中,我们是否将它们添加到同一个覆盖网络以使用 swarm dns 功能?
- 等等...
(我不需要关于如何安装东西的细节,这个问题是关于顶级组织的)