我需要部署同一LAMP(或LEMP)应用程序的许多实例:
申请要求:
Nginx
MariaDB
PHPFPM
composer
bower
阅读Docker文档和许多方法之后,我将看到用于此Web应用程序的不同解决方案:
所有堆栈都放在一个容器中:
mysql
例子 :
Tutum
Phusion
Docker可以在容器中的多个进程中正常运行。实际上,没有技术原因可以限制您只使用一个过程
优点 (恕我直言):
缺点 (恕我直言):
对于要部署的每个Web应用程序,都会部署一个容器堆栈:
Mysql
PHP-FPM
Gaudi
专业版 (恕我直言):
我比Ops更能开发,也让我感到困惑。
因此,问题:
我最近在Docker上针对此类设置进行了分析。我知道有些人将Docker视为一种MicroVM,但我的观点是Docker理念更倾向于每个容器使用单个进程。这与编程中的“单一责任”原则保持了良好的一致性。Docker容器执行的越多,可重用性就越低,并且管理起来就越困难。我在这里发表了所有想法:
http://software.danielwatrous.com/a-review-of- docker/
然后,我继续使用Docker构建LEMP堆栈。将PHP和Nginx进程拆分为单独的Docker容器并没有太大价值,但是Web和数据库功能位于单独的容器中。我还将展示如何管理链接和卷共享,以避免在容器中运行SSH守护程序。您可以按照我在此处所做的工作作为参考。
http://software.danielwatrous.com/use-docker-to-build-a-lemp-stack- buildfile/
关于增加每个容器的单个功能的 复杂性 的观点,您是正确的。外观和感觉就像您具有不同的分布式层。大型应用程序已经这样做了多年,并且确实增加了通信,安全性和管理方面的复杂性。当然,它也带来许多好处。