TL; DR
Поскольку PHP не является компилируемым языком, процесс "сборки" с точки зрения компиляции кода в исполняемый файл здесь не уместен.
Создание контейнера без сохранения состояния
Однако, если вы разрабатываете веб-приложение и хотите развернуть его, ваш лучший путь (то есть, отраслевой стандарт) - это "создать" контейнер без состояния из него. В этом контейнере у вас будет Apache + PHP или Ngnix + PHP-FPM (или даже просто PHP с PHP-PM). Это будет процесс вашего приложения, представленный портом 80: красивый, масштабируемый докер-контейнер без сохранения состояния.
В процессе создания контейнера идея состоит в том, чтобы установить версию PHP по вашему выбору (с соответствующими расширениями) и веб-сервер или процесс, который будет работать через порт HTTP. Затем вы загружаете свой код в контейнер с помощью git, устанавливаете переменные окружения и выполняете установку composer. В результате получится образ докера с версией вашего приложения, доступной по порту 80.
Подробнее об этом здесь .
Мммм, нет, я не делаю контейнеры
Конечно, это может не подходить вам, в зависимости от того, насколько ваше приложение следует принципам приложения из 12 факторов и от того, где вы собираетесь его разместить.
Если вы хотите выполнить развертывание на виртуальном хостинге, вам нужно изменить папку public
для корневого каталога документов вашего хостинг-провайдера. Поскольку у вас нет доступа к среде выполнения PHP на общем хостинге, вам нужно будет скопировать файл .env и отправить его на веб-хостинг (что крайне опасно).
Чтобы настроить автоматическое развертывание, предпочтительнее ssh
. Если у вас нет консольного доступа к вашему веб-хостингу, то git-ftp
, вероятно, ваш лучший друг здесь. Используя webhooks (например, на Github), в событии после получения вы развернете свой код, выполняющий скрипт, который, среди прочего, будет иметь установку композитора (с заблокированными зависимостями) и выборку всего на www -данных пользователя (или, если уж на то пошло, пользователя веб-сервера).
Теперь на правильные ответы
Сказав это, я постараюсь ответить на некоторые ваши вопросы:
Вы правы. vendor/
должен остаться вне. Не composer.lock
однако. По сути, вам необходимо развернуть весь код, который находится в вашем хранилище.
В вашем сценарии развертывания (да, он у вас будет) вы должны создать новый файл .env для добавления. Да, вам нужны все параметры, но, очевидно, со значениями для производственной среды.
Да, вы должны переименовать папку public
Symfony в www
. Насколько я понимаю, у вас не должно быть проблем. То есть, если вы не используете сервер Symfony для разработки. Но простого php -S localhost:8000 -t www
в вашем проекте будет достаточно для разработки. Я использую это все время.
- Если вы используете apache, да, вы должны включить в свое развертывание .htaccess.
Ваше обновление
Итак, я вижу, что ваш хостинг имеет возможности развертывания git. Это хорошо. В этом случае должен быть способ настроить хук после получения в репо, расположенном там. Этот post-receive может выполнить любую команду bash, например, установку композитора. Тем не менее, это будет исполняемый файл композитора, но я не думаю, что это будет включено. Что вы можете сделать, это загрузить composer.phar
в корневой каталог вашего хостинга. Это композитор, в одном исполняемом файле.
Затем в своем хуке после получения (он же ваш сценарий развертывания) вы запустите установку composer и упомянутый chown.
Не запрашиваемая консультация
Я понимаю, что ваши требования заключаются в развертывании на веб-хостинге. Тем не менее, вы ищете преимущества CI / CD способом, который не соответствует текущему отраслевому стандарту. Веб-хостинги не предназначены для развертывания. То, как вы делаете это сейчас, может причинить вам некоторую боль в будущем, особенно при добавлении некоторых других вспомогательных сервисов, масштабировании и т. Д. *
Теперь, если ваше приложение маленькое и простое, вы, вероятно, можете игнорировать мои слова.