Comments 5
Если отдавать только composer.json - пользователь всё равно оказывается в той же ситуации: нужен PHP, нужен Composer, нужно вручную запустить composer install, настроить веб-сервер. Проблема не решена.
Можно добавить в проект Makefile и прописать команду вроде make init, которая автоматически, а не вручную, поднимет контейнеры, запустит composer install и сделает прочие необходимые настройки, например. Проблема решена. И "тяжёлые" процессы переходят на сторону получателя.
Спасибо за идею с Makefile и make init - одну точку входа действительно удобно иметь. По поводу переноса тяжёлых процессов на получателя: чтобы в проекте был composer.lock (воспроизводимые сборки), composer install на сервере в любом случае нужен - без него lock не получить. Значит, от того, что получатель дополнительно запускает composer install по make init, нагрузка с сервера не снимается, выигрыш в основном в размере архива (не кладем vendor/ в ZIP). Для такого утилитарного стартера это не такой уж большой выигрыш, а усложнять логику не хочется.
Еще можно создать шаблон проекта через шаблонизатор. Мы с командой использовали Copier, он работает через шаблонизацию jinja - это удобно и быстро.
В этом сервисе упор был на то, чтобы у пользователя не было лишних зависимостей: только скачать ZIP и запустить docker compose. Спасибо за вариант, про Copier не знал - полезно!
Я фанат разработки в докере, поэтому мы сделали с командой максимально «беззависимый» вариант что-то типа docker run team/service-template -v ./:/copier и соответственно все разворачивалось в указанной директории вообще без каких-либо зависимостей) А так да, сам копир на питоне написан, если память не изменяет.
Symfony Init — быстрый старт проекта без лишней рутины