1

我希望能够在本地开发微服务,但也希望以最少的配置更改将它们“推送”到生产环境中。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?示例:JS ?
  • 如果服务不在单个 docker-compose 中,我们是否将它们添加到同一个覆盖网络以使用 swarm dns 功能?
  • 等等...

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

4

1 回答 1

0

Docker Compose 主要用于定义不同的容器、配置和使用单个命令使它们可用(也用于排序)。因此,它最适合本地开发、集成测试并将其用作持续集成过程的一部分。

虽然不排除 Docker compose 可以在生产环境中使用,但我认为使用Kubernetes将是一个很好的例子,它可以更好地控制扩展,管理多个容器。

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

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

于 2016-06-14T12:08:00.440 回答