Docker:如何对LAMP应用程序的多个实例进行Docker化和部署
- 每个实例都可以使用前端负载均衡器/代理从一个子域访问
- 每个实例必须具有自己的数据库数据和文件数据。
- 每个实例都可能受到监视
- 内存限制/ CPU可能会针对每个应用实例设置
- 易于自动化新的Webapp实例的部署
- 测试和开发环境可能很容易重现。
申请要求:
- dameon过程(
Nginx
,MariaDB
,PHPFPM
) - 二进制文件(
composer
,bower
,…) - 其他系统特定的库和配置
回答:
- webapp源文件,EMP守护进程,二进制文件……
mysql
和webapp数据文件的已安装卷
Tutum
为Wordpress应用程序提供了一个多合一的容器:https : //github.com/tutumcloud/tutum-docker-wordpressPhusion
,其中提供了针对Docker优化的基础映像,并在文档中进行了详细说明(https://github.com/phusion/baseimage-docker#docker_single_process):
Docker可以在容器中的多个进程中正常运行。实际上,没有技术原因可以限制您只使用一个过程
(恕我直言):
- 似乎易于自动化部署,监视,销毁……。
- 易于在产品,测试和开发环境中使用。
(恕我直言):
- 单片
- 难以扩展
- 没有充分利用Docker的优势
回答:
- 每个进程的一个容器:
Nginx
,Mysql
,PHP-FPM
, - 二进制容器(
composer
,,bower
…)也可以进行docker化,或合并到phpfpm容器中 - 挂载mysql和webapp数据文件的卷
- orchestror工具
Gaudi
提供了一个LEMP架构示例,该架构基于3个“ daemon”容器(nginx,mysql,phpfpm)和2个应用容器(composer,bower)(http://marmelab.com/blog/2014/06/04 /demo-symfony-with-docker-and-gaudi.html)
(恕我直言):
- 解耦
- 每个实例隔离的进程
- 每个容器一个进程,不需要守护程序管理器作为RUnit或Supervisord
(恕我直言):
- 似乎工作更复杂
- 很难维护,要查看所有容器状态,链接,版本的“大图” …
回答:
- 一个“ app”容器,其中包含:app src文件,nginx,phpfmp,composer和git。
- 一个用于db mysql的容器,可以与应用容器共享或不共享
我比Ops更能开发,也让我感到困惑。
- ?
- ,以便对所有容器状态,链接,版本有一个“整体了解”?
- App src文件(PHP)可能内置在容器中或作为卷安装,例如。/ var / www?
回答:
我最近在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/
关于增加每个容器的单个功能的
的观点,您是正确的。外观和感觉就像您具有不同的分布式层。大型应用程序已经这样做了多年,并且确实增加了通信,安全性和管理方面的复杂性。当然,它也带来许多好处。
以上是 Docker:如何对LAMP应用程序的多个实例进行Docker化和部署 的全部内容, 来源链接: utcz.com/qa/409816.html