Мне нужна хорошая практика для развертывания моих php-веб-приложений в локальный док-контейнер на основе Ubuntu 18.04 и Apache 2.4.
В зависимости от типа приложения, его базовый файл - myapp/public/index.php
(Laravel) или просто myapp/index.php
(обычный ванильный php).Конечно, я могу смонтировать приложения в /var/www/html/myapp
или любом другом месте.
Вариант 1 (исправлено / etc / hosts, apache2.conf и vhosts):
Для каждого приложения добавьте 127.0.0.1 myapp
в мой локальный файл /etc/hosts
, чтобы он перенаправлялся в док-контейнер.
В моем файле /etc/apache2/apache2.conf
установите для корня документа значение /var/www/html
Для каждого веб-приложения определите vhost в /etc/apache2/sites-available
Преимущества:
Я могу получить доступ к своим приложениям локально, используя такие URL, как http://myapp_1
, http://myapp_2
и т. д.
Я могу указать http://myapp_1
на /var/www/myapp_1/public
.
Позже я смогу использовать эту конфигурацию в своей производственной среде (без докера) более или менее без изменений.
Недостатки:
Конфигурация apache жестко запрограммирована в образ докера,Всякий раз, когда я добавляю, удаляю или переименовываю приложение, мне приходится настраивать и перестраивать образ докера.
Работа в команде очень громоздкая, так как каждый может работать над разными подмножествами приложений,должен быть в его / ее образе докера.
Вариант 2 (используйте .htaccess):
In /etc/apache2/apache2.conf
и /etc/apache2/sites-available
определяют только веб-корень: /var/www/html
Смонтируйте приложения как подкаталоги веб-корня: /var/www/html/myapp_1
Используйте .htaccess
внутри соответствующей папки myapp
для настройки приложений.Они должны быть доступны в http://localhost/myapp_1
и т. Д.
Преимущества:
Недостатки:
Я не знаю, можно ли (и как) настроить .htaccess
так, чтобы его можно было использовать как конфигурацию <VirtualHost>
со всеми правильно работающими путями (например, css).
Конфигурация apache значительно отличается от производственной среды.
Мой вопрос
Что такое хорошая практика для объединенияПреимущества обоих подходов?Какой вариант вы бы выбрали?Есть ли другая альтернатива, о которой я не упомянул?