Этот репозиторий — инфраструктурный скелет для локальной разработки Symfony-проекта.
Внутри уже настроены:
- PHP 8.4 (FPM)
- Nginx
- PostgreSQL 16
- Redis 7
- RabbitMQ 3 (Management UI)
- Xdebug для отладки в PhpStorm
ВАЖНО: код Symfony-приложения вы добавляете сами в папку
app/(и коммитите в git). Здесь не нужно создавать Symfony через composer — просто кладёте готовыйapp/.
- Установлен Docker (Docker Desktop / Docker Engine)
- Установлен docker compose (команда именно
docker compose, неdocker-compose)
В корне репозитория ожидается папка с проектом Symfony:
./app
bin/
config/
public/
src/
composer.json
...
Из корня репозитория:
docker compose up -d --buildПосле старта сервисы будут доступны:
- Symfony (Nginx): http://localhost:8080
- RabbitMQ UI: http://localhost:15672 (логин/пароль:
app/app) - PostgreSQL:
localhost:5432(db/user/pass:app/app/app) - Redis:
localhost:6379
После первого запуска контейнеров нужно создать БД (если её нет) и выполнить миграции.
docker compose exec php php bin/console doctrine:database:create --if-not-existsdocker compose exec php php bin/console doctrine:migrations:migrateЕсли миграции уже применены — команда просто сообщит об этом.
docker compose downdocker compose logs -fИли конкретного сервиса:
docker compose logs -f phpВ Symfony-проекте в app/.env.local (или app/.env.dev.local) должны быть настроены DSN.
Пример:
APP_ENV=dev
DATABASE_URL="pgsql://app:app@postgres:5432/app?serverVersion=16&charset=utf8"
REDIS_URL="redis://redis:6379"
MESSENGER_TRANSPORT_DSN="amqp://app:app@rabbitmq:5672/%2f/messages"Контейнеры видят друг друга по именам сервисов:
postgres,redis,rabbitmq.
Открыть shell в PHP-контейнере:
docker compose exec php shПроверить версии и расширения:
docker compose exec php php -v
docker compose exec php php -m | sortЗапустить Symfony команды:
docker compose exec php php bin/consoleВ PhpStorm:
- Run → Start Listening for PHP Debug Connections
Settings → PHP → Servers → Add
- Name:
symfony74
(должно совпадать сPHP_IDE_CONFIG: serverName=symfony74вdocker-compose.yml) - Host:
localhost - Port:
8080 - Debugger:
Xdebug - ✅ Use path mappings
- Local path:
<путь_к_репозиторию>/app - Remote path:
/var/www/app
- Local path:
Settings → PHP → Debug
- Xdebug port:
9003
- Поставьте breakpoint в коде Symfony.
- Откройте в браузере:
http://localhost:8080 - PhpStorm должен остановиться на breakpoint.
Если breakpoint не ловится:
- Проверьте что listening включён.
- Проверьте что порт 9003 не занят.
- Проверьте, что контейнер видит хост:
docker compose exec php php -r "echo gethostbyname('host.docker.internal').PHP_EOL;"| Service | Host | Port | Notes |
|---|---|---|---|
| Nginx | localhost | 8080 | Входная точка приложения |
| PHP-FPM | внутри сети docker | 9000 | Nginx проксирует сюда |
| Postgres | localhost | 5432 | user/pass/db = app/app/app |
| Redis | localhost | 6379 | |
| RabbitMQ | localhost | 5672 | AMQP |
| RabbitMQ UI | localhost | 15672 | app/app |
Проверьте, что файлы существуют:
docker/php/conf.d/php.inidocker/php/conf.d/xdebug.ini
и вы запускаете docker compose up -d --build из корня репозитория.
Обычно PHP-контейнер ещё не поднялся или упал.
docker compose ps
docker compose logs -f phpЕсли нужно — добавим healthchecks, make/task команды и шаблон messenger routing под RabbitMQ.