我使用的是拉拉家园解决方案的发展,但现在我想迁移到码头。问题是我的容器怎么会“臃肿”。当我说“臃肿”时,我指的是每个容器应该有多少模块/服务。例如,我创建了四个定制容器,如下所示:
php
-> php-fpm
-> composer
-> memcached
-> redis
mysql
-> mysql
nginx
->nginx
node
->gulp
->bower
->npm
->grunt问题是,如果这是正确的聚类,还是我应该创建单独的容器,比如说咕噜、保龄球、memcached等等?如何决定什么是一起的,什么是分开的容器?有什么规定吗?发展应该和生产一样吗?
发布于 2015-12-20 05:15:30
如何将应用程序组件放入容器取决于您的目标是什么。您的目标是使您的服务器更容易管理/管理吗?您是否主要感兴趣的是,如何成功地扩展您的应用程序,因为它得到更多的流量?以下是一些建议,如果缩放是您最关心的问题:
下面是一个表示以下内容的图表:

请注意,您可以添加尽可能多的PHP/Redis/Memcached容器,以便根据需要处理额外的服务器负载。这些容器甚至不一定必须位于同一台物理服务器上,这是您获得额外内存和处理能力的地方。
如果你不期望你的应用程序负载如此之多,你需要所有这些来管理它,它可能只是更容易坚持传统的方法。Docker相对来说还是比较新的,并不是真正推荐用于生产环境,尽管,像我一样,您可能真的很有兴趣了解它是如何有用的。
Docker最酷的一点是,您可以在本地开发容器,并将它们“按原样”部署到云中。因此,在本地您将拥有所有这些容器(甚至可以交换其中的一些容器,比如DB和/或服务器),然后部署就变成了在生产服务器上运行容器的一个新实例的问题。
我希望这能帮助您更好地理解如何提出将应用程序的碎片分解到容器中的策略。Docker在Laravel领域还是相对较新的,所以我相信在接下来的一两年中,这些实践将会迅速改变,并且可能最终会成为自动化的。
发布于 2015-12-14 15:47:03
在定义容器时,我总是预先考虑指定的服务将扩展多少,以及是否可以以一种孤立的方式扩展它。这样我就可以及时地扩展特定的服务,并在瓶颈所在的地方进行微调。以你为例,我会这样做:
您总是可以考虑将更多的MySQL实例添加到MySQL集群中,就像使用Memcached和Redis一样。
作为最终的建议,在生产环境中,您应该考虑在MySQL和Memcached + Redis中使用类似Amazon和之类的东西。这将更容易设置和管理。
https://stackoverflow.com/questions/34270808
复制相似问题