Live: symfony-init.dev
Язык / Language: Русский · English
Выберите параметры проекта и получите ZIP с готовым Symfony-приложением под Docker. Запуск: docker compose up.
Скриншот интерфейса
- Параметры: имя проекта, PHP, сервер (PHP-FPM + Nginx или FrankenPHP), версия Symfony (LTS и текущие - с symfony.com).
- База данных: без БД, PostgreSQL, MySQL, MariaDB, SQLite. Связка с чекбоксом Doctrine ORM: выбор БД включает ORM, выбор ORM подставляет PostgreSQL при "без БД". В Docker - образы на Alpine где есть (postgres, redis, memcached, rabbitmq).
- Кеш: селект None / Redis / Memcached. В проект добавляются контейнер, PHP-расширение и
CACHE_DSNв.env. - Расширения: Doctrine ORM, Security, Mailer, Messenger, Validator, Serializer, API Platform, HTTP Client, Nelmio API Doc. Зависимости подставляются автоматически (API Platform -> ORM + Serializer + Nelmio; RabbitMQ -> Messenger).
- Message broker: опция RabbitMQ - контейнер RabbitMQ с management и
MESSENGER_TRANSPORT_DSNв.env. - Генерация: скелет через
composer create-project, подстановка Dockerfile, docker-compose, конфиг веб-сервера (Nginx / Caddyfile). Рецепты Flex не дублируют наши сервисы (SYMFONY_SKIP_DOCKER=1, очистка блоков рецептов в compose). - Скачивание: кнопка блокируется до ответа, архив через fetch. При лимите - сообщение и время повтора.
- Кеширование: по комбинации параметров (PHP, сервер, Symfony, расширения, БД, кеш, RabbitMQ). Кеш в
var/share/(Symfony 7.4+). - Лимит: 30 запросов в час на IP.
Проект открыт: вы можете просмотреть исходный код генератора и логику сборки архива до использования. Сгенерированный ZIP содержит только стандартный скелет Symfony, зависимости из Packagist и добавленные Docker/конфиги - без скрытого кода. Перед развёртыванием рекомендуем просмотреть содержимое архива.
docker compose up -d --buildСервис будет доступен по адресу: http://localhost:8080
Войти в контейнер:
docker compose exec frankenphp bashСтиль кода проверяется и исправляется с помощью PHP CS Fixer (правила @Symfony). Конфигурация - app/.php-cs-fixer.dist.php. Запуск внутри контейнера (из каталога приложения):
docker compose exec frankenphp bash
./vendor/bin/php-cs-fixer fix srcПрогрев кеша версий PHP/Symfony и сгенерированных проектов (по желанию):
# только популярные конфигурации (по умолчанию)
php bin/console app:warm-cache
php bin/console app:warm-cache --popular-only
# все базовые комбинации PHP × Symfony × сервер, без расширений/БД (дольше)
php bin/console app:warm-cache --all-baseСброс кеша сгенерированных проектов (пул cache.app):
php bin/console cache:pool:clear cache.appphp vendor/bin/phpunit --configuration phpunit.dist.xmlПокрыты юнит-тестами:
ProjectConfigFactory- бизнес-правила (ORM <-> БД, RabbitMQ -> Messenger, нормализация имени проекта)ValidGeneratorOptionValidator- кастомный constraint для доменной валидации параметров запроса
Исправления, идеи и доработки приветствуются: Issues и Pull Request в репозитории проекта.
Pick project options and get a ZIP with a ready-to-run Symfony app for Docker. Run with docker compose up.
Interface screenshot
- Parameters: project name, PHP version, server (PHP-FPM + Nginx or FrankenPHP), Symfony version (LTS and current, from symfony.com).
- Database: none, PostgreSQL, MySQL, MariaDB, SQLite. UI syncs with Doctrine ORM: choosing a DB checks ORM; checking ORM selects PostgreSQL when DB is none. Docker uses Alpine-based images where available (postgres, redis, memcached, rabbitmq).
- Cache: selector None / Redis / Memcached. Adds the container, PHP extension, and
CACHE_DSNin.env. - Extensions: Doctrine ORM, Security, Mailer, Messenger, Validator, Serializer, API Platform, HTTP Client, Nelmio API Doc. Dependencies are auto-selected (API Platform -> ORM + Serializer + Nelmio; RabbitMQ -> Messenger).
- Message broker: RabbitMQ option adds the RabbitMQ container with management UI and
MESSENGER_TRANSPORT_DSNin.env. - Generation: skeleton via
composer create-project, Dockerfile and docker-compose injection, web server config (Nginx / Caddyfile). Flex recipes do not duplicate our services (SYMFONY_SKIP_DOCKER=1, recipe blocks stripped from compose). - Download: button disabled until response; archive via fetch. Rate limit shows message and retry time.
- Caching: by parameter set (PHP, server, Symfony, extensions, database, cache, RabbitMQ). Cache in
var/share/(Symfony 7.4+). - Rate limit: 30 requests per hour per IP.
The project is open source: you can inspect the generator source code and how the archive is built before using it. The generated ZIP contains only the standard Symfony skeleton, dependencies from Packagist, and the added Docker/config files - no hidden code. We recommend reviewing the archive contents before deploying.
docker compose up -d --buildThe service will be available at: http://localhost:8080
Enter the container:
docker compose exec frankenphp bashCode style is enforced with PHP CS Fixer using the @Symfony rule set. Config: app/.php-cs-fixer.dist.php. Run inside the container (from the app directory):
docker compose exec frankenphp bash
./vendor/bin/php-cs-fixer fix srcTo warm the PHP/Symfony version cache and generated project cache (optional):
# popular configurations only (default)
php bin/console app:warm-cache
php bin/console app:warm-cache --popular-only
# all base PHP × Symfony × server combinations, no extensions/DB (slower)
php bin/console app:warm-cache --all-baseTo clear the generated project cache (cache.app pool):
php bin/console cache:pool:clear cache.appphp vendor/bin/phpunit --configuration phpunit.dist.xmlUnit tests cover:
ProjectConfigFactory- business rules (ORM <-> DB, RabbitMQ -> Messenger, project name normalization)ValidGeneratorOptionValidator- custom constraint for domain validation of request parameters
Fixes, ideas and improvements are welcome via Issues and Pull Requests in the project repository.
