在黑暗时代,我通常用于开发LAMP Web应用程序的设置是在计算机上进行本地测试。PHP(以我为例),数据库和Web服务器都是本地安装的。
该服务器设置了Apache和MySQL的标准安装,并且我在Web应用程序的不同部分具有多个虚拟主机。当我对本地计算机上的结果感到满意时,我将登录到服务器和git pull
登台环境中。假设服务器和我的机器都运行良好,那么我将为生产做同样的事情。
新的开端…
因此,现在我要从头开始一个全新的Web应用程序,我想“以适当的方式”进行操作。我已经阅读了有关Docker,Vagrant和Puppet(以及Chef,尽管我个人更喜欢Puppet的依赖系统,而不是Chef的迭代过程)。尽管我已经做了所有的研究,但是似乎仍然有一些问题我找不到以下答案:
Web服务器(例如Apache),数据库服务器(例如MySQL)和Web应用程序的每个部分是否应该有单独的Docker容器?
当我谈论Web应用程序的各个部分时,我的意思是诸如mysite.com,controlpanel.mysite.com等。这些“部分”将共享同一数据库。
由于Docker似乎为Web和数据库服务器之类的东西提供了现成的容器,因此看来这些东西至少应该放在单独的容器中。Web应用程序的不同部分也应该放在单独的容器中吗?
Docker容器似乎被设计为可替换的,而不是我必须更新其中的软件。他们写的我不想丢失的数据又如何呢?
数据库服务器将管理与数据库内容相关的文件(我将要备份)。Web服务器将创建日志,而我的Web应用程序将管理各种文件和缓存等。所有这些文件都需要写在应用程序容器的外部(因为我可能会在更新时替换它们?),所以它们去哪里了? ?直接进入主机的文件系统?还是放入单独的“ Docker Volume”?如果它们进入Docker卷,我是否应该对数据库,Web服务器,应用程序等使用单独的卷?是否仍可以像现在一样使用SFTP从本地计算机轻松访问内容?我不想在这里失去任何便利!
使用Puppet为开发服务器和生产服务器创建和管理Docker容器是一个好主意吗?
Puppet似乎支持直接管理Docker容器,因此这似乎是一种从头开始轻松设置服务器或生产环境(使用Vagrant)的合理好方法。
希望我已经问了一些相关的问题;为开发和生产类似LAMP的Web应用程序获取一些适当的“最佳实践”将是非常不错的,只是我发现的东西似乎很少!