我正在寻找将我的php web应用程序部署到基于Ubuntu 18.04和Apache 2.4的本地docker容器的良好实践。
根据应用程序的类型,其基本文件为myapp/public/index.php
(Laravel)或仅myapp/index.php
(普通的vanilla php)。当然,我可以将应用程序安装到/var/www/html/myapp
或任何其他位置。
选项1(修复/ etc / hosts,apache2.conf和vhosts):
对于每个应用,将127.0.0.1 myapp
添加到我的本地/etc/hosts
文件,以便将其重定向到docker容器。
在我的/etc/apache2/apache2.conf
文件中,将文档根目录设为/var/www/html
对于每个网络应用,请在/etc/apache2/sites-available
优点:
我可以使用http://myapp_1
,http://myapp_2
等网址在本地访问我的应用。
我可以将http://myapp_1
指向/var/www/myapp_1/public
。
稍后我可以在生产环境(没有泊坞窗)中或多或少地使用此配置而无需修改。
缺点:
apache配置被硬编码到docker镜像中。每当我添加,删除或重命名应用程序时,我都必须调整并重新构建泊坞窗图像。
团队合作非常繁琐,因为每个人都可以处理不同的应用程序子集,这些应用程序必须位于他/她的泊坞窗图像中。
选项2(使用.htaccess):
在/etc/apache2/apache2.conf
和/etc/apache2/sites-available
中仅定义了网络根:/var/www/html
将应用程序挂载为Web根目录的子目录:/var/www/html/myapp_1
在相应的.htaccess
文件夹中使用myapp
来配置应用。它们应该可以在http://localhost/myapp_1
等访问
优点:
无需针对新应用调整泊坞窗图片。
无法更改本地/etc/hosts
个文件。
缺点:
我不知道是否(以及如何).htaccess
可以配置,以便它可以像<VirtualHost>
配置一样使用,所有路径都正常工作(例如css)。
apache配置与生产环境明显不同。
我的问题
结合两种方法的优点,有什么好的做法?你会选择哪个选项?还有其他选择,我没有提到过吗?