各种vhost配置的通用docker镜像

时间:2018-06-11 10:08:31

标签: php laravel apache docker webserver

我正在寻找将我的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):

  1. 对于每个应用,将127.0.0.1 myapp添加到我的本地/etc/hosts文件,以便将其重定向到docker容器。

  2. 在我的/etc/apache2/apache2.conf文件中,将文档根目录设为/var/www/html

  3. 对于每个网络应用,请在/etc/apache2/sites-available

  4. 中定义虚拟主机

    优点:

    • 我可以使用http://myapp_1http://myapp_2等网址在本地访问我的应用。

    • 我可以将http://myapp_1指向/var/www/myapp_1/public

    • 稍后我可以在生产环境(没有泊坞窗)中或多或少地使用此配置而无需修改。

    缺点:

    • apache配置被硬编码到docker镜像中。每当我添加,删除或重命名应用程序时,我都必须调整并重新构建泊坞窗图像。

    • 团队合作非常繁琐,因为每个人都可以处理不同的应用程序子集,这些应用程序必须位于他/她的泊坞窗图像中。

    选项2(使用.htaccess):

    1. /etc/apache2/apache2.conf/etc/apache2/sites-available中仅定义了网络根:/var/www/html

    2. 将应用程序挂载为Web根目录的子目录:/var/www/html/myapp_1

    3. 在相应的.htaccess文件夹中使用myapp来配置应用。它们应该可以在http://localhost/myapp_1等访问

    4. 优点:

      • 无需针对新应用调整泊坞窗图片。

      • 无法更改本地/etc/hosts个文件。

      缺点:

      • 我不知道是否(以及如何).htaccess可以配置,以便它可以像<VirtualHost>配置一样使用,所有路径都正常工作(例如css)。

      • apache配置与生产环境明显不同。

      我的问题

      结合两种方法的优点,有什么好的做法?你会选择哪个选项?还有其他选择,我没有提到过吗?

0 个答案:

没有答案