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

新的想法是每个服务只有一个docker-compose。这并不意味着它将仅使用一个容器运行;它可能具有更多的内部空间(例如后面的​​一些数据存储区等)。

从新的 Angular 来看,让我们看一下由5个组件组成的众所周知的docker voting app example:

  • ( P )Python Webapp,可让您在两个选项之间进行投票
  • ( R )Redis队列,用于收集新选票
  • ( J )Java工作程序,它消耗选票并将其存储在…
  • ( S )由Docker卷
  • 支持的Postgres数据库
  • ( N )Node.js Webapp,它实时显示投票结果

  • 假设您想将此示例投入生产(因此,只有一个docker-compose是不可行的:)。别忘了,可能还会在基础之上添加更多与基础架构相关的组件(例如kibana,prometheus ...)。而且我们希望能够扩展所需的资源;我们使用例如一群。

    问题是:
  • 如何组织此示例:单个docker-composes还是多个?
  • 我们在这里有哪些微服务?换句话说,您将哪些组件组合为单个docker-compose?示例: J S 吗?
  • 如果服务不在单个docker-compose中,我们是否将它们添加到同一覆盖网络以使用swarm dns功能?
  • 等...

  • (我不需要有关如何安装内容的详细信息,这个问题与顶级组织有关)

    最佳答案

    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

    08-07 19:20
    查看更多