Skip to content

Web Service for Generating Symfony Projects with Docker

License

Notifications You must be signed in to change notification settings

bulatronic/symfony-init

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Symfony Initializr

PHP Symfony FrankenPHP Bootstrap Docker

Live: symfony-init.dev

Язык / Language: Русский · English


Веб-сервис генерации Symfony-проектов с Docker

Выберите параметры проекта и получите ZIP с готовым Symfony-приложением под Docker. Запуск: docker compose up.

Скриншот интерфейса

Главная страница Symfony Initializr


Возможности

  • Параметры: имя проекта, 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.app

Тесты

php vendor/bin/phpunit --configuration phpunit.dist.xml

Покрыты юнит-тестами:

  • ProjectConfigFactory - бизнес-правила (ORM <-> БД, RabbitMQ -> Messenger, нормализация имени проекта)
  • ValidGeneratorOptionValidator - кастомный constraint для доменной валидации параметров запроса

Участие в разработке

Исправления, идеи и доработки приветствуются: Issues и Pull Request в репозитории проекта.


Web Service for Generating Symfony Projects with Docker

Pick project options and get a ZIP with a ready-to-run Symfony app for Docker. Run with docker compose up.

Interface screenshot

Symfony Initializr main page


Features

  • 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_DSN in .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_DSN in .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.

Trust & transparency

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.


Running

docker compose up -d --build

The service will be available at: http://localhost:8080

Enter the container:

docker compose exec frankenphp bash

Development

Code 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 src

To 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-base

To clear the generated project cache (cache.app pool):

php bin/console cache:pool:clear cache.app

Tests

php vendor/bin/phpunit --configuration phpunit.dist.xml

Unit tests cover:

  • ProjectConfigFactory - business rules (ORM <-> DB, RabbitMQ -> Messenger, project name normalization)
  • ValidGeneratorOptionValidator - custom constraint for domain validation of request parameters

Contributing

Fixes, ideas and improvements are welcome via Issues and Pull Requests in the project repository.

About

Web Service for Generating Symfony Projects with Docker

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages