Согласитесь на 100% с claudiu-creanga в том, что он не обязывает поставщика, а также избегает установки composer на производстве.
То, как мы справились с этим, - это наличие активной папки и папки-кандидата на выпуск. Именно в папке release-кандидата мы запускаем команды git pull и устанавливаем composer --no-dev. Наш процесс можно описать так:
В папке релиз-кандидат:
- Проверьте на неожиданные изменения
- Обновить репо
- Композитор установить
Синхронизировать файлы с папкой сайта
- В папке живого сайта:
- Развертывание статических файлов
- Включить режим обслуживания
- Включить модули
- Запустите установочные скрипты
- Компилировать DI
- Очистить кэш
- Отключить режим обслуживания
- Обновить разрешения
Я написал более длинную статью в блоге, в которой приведены фактические команды и причины этого: https://www.c3media.co.uk/blog/c3-news/deploying-magento-2-production-environment/
ОБНОВЛЕНИЕ: Теперь мы копируем действующую базу данных в промежуточную базу данных и используем ее для запуска сценариев установки, развертывания статических файлов и компиляции DI в автономном режиме. Затем он может быть развернут в режиме реального времени, включая pub / static файлы и var. Мы все еще ненадолго отключаем сайт, если выполняются сценарии установки, но в противном случае сайт остается закрытым. Более подробная информация на https://www.c3media.co.uk/blog/c3-news/magento-2-deployment-without-downtime/
ОБНОВЛЕНИЕ: я передумал насчет фиксации папки продавца. Зафиксировав папку, вы получаете возможность отслеживать историю изменений этих файлов, видеть, случайно ли вы что-то изменили, и, что самое важное, избегать запуска composer. во время развертывания. Последнее важно сейчас, когда мы полагаемся на внешних поставщиков репозиториев. Что если один из них недоступен? Внезапно вы не можете развернуть. Недостатками являются больший репозиторий, риск совершения основных хаков и отвратительный удар разработчиков вроде меня :)