Docker Compose шаблон для PHP проекта
Шаблон основан на репозитории https://github.com/sherifabdlnaby/kubephp. Отдельное спасибо Паше.
Конфигурация
image | version |
---|---|
PHP | 8.3.6 |
Xdebug | 3.3.2 |
Nginx | 1.25 |
PostgreSQL | 16 |
Для каких проектов подходит этот шаблон?
Шаблон подходит для проектов, у которых публичные файлы находятся папке {путь до корня проекта}/public/
.
В этой папке должны находиться такие файлы как:
- index.php;
- изображения и другие медиа файлы;
- подключаемые css, js файлы;
- другие файлы, к которым пользователь может получить доступ.
Примеры фреймворков, которые легко можно использовать в этом шаблоне:
- Symfony
- Laravel
- Slim
- Codeigniter
Для работы Yii
Чтобы работать с Yii, необходимо заменить путь /app/public
на /app/web
- изменить конфигурацию nginx
в файле
docker/web/nginx/conf.d/app.conf
в 16 строчке заменитьroot $base/public;
->root $base/web;
- в compose-файле изменить volume
${APP_BASE_DIR-.}/public:/app/public
->${APP_BASE_DIR-.}/web:/app/web
- в файле
docker/web/Dockerfile
в 12 строчке заменитьCOPY --chown=www-data:www-data --from=app /app/public /app/public
->COPY --chown=www-data:www-data --from=app /app/web /app/web
Мог где-то что-то упустить. Разворачивать Yii не пробовал.
В частных случаях может потребоваться доработка конфигураций.
Инструкция
Создание БД для тестов
- Войти в консоль -
make shell
- Запустить -
bin/console --env=test doctrine:database:create
- Запустить -
bin/console --env=test doctrine:schema:create
Воркер отправки Email квестов
- Войти в консоль -
make shell
- Запустить команду -
bin/console messenger:consume -v scheduler_quests
Kafka
Инструкция
- Создание топика
- Запустить команду -
make create-kafka-topic
- Запустить команду -
- Запуск воркера
- Перейти в командную строку php -
make shell
- Запустить команду -
bin/console messenger:consume send_transport
- Перейти в командную строку php -
- Остановка воркера
- Перейти в командную строку php -
make shell
- Запустить команду -
bin/console messenger:stop-workers
- Перейти в командную строку php -
Тестирование
- Войти в консоль -
make shell
- Запустить команду -
bin/phpunit
Postman
Импортировать в Postman {URL}/api/doc.json
Настройка Xdebug (PHPStorm)
Инструкция
-
Задать значение в
.env
дляXDEBUG_IDE_KEY
. Например:xdebug_app_key
. При изменении настроек, необходимо пересобрать контейнер с php.
-
Settings -> Build, Execution, Deployment -> Docker:
Нажимаем "+", указываем своё имя и настраиваем подключение в зависимости от Ваших настроек Docker. Внизу должна появиться надпись
Connection successful
.
-
Settings -> PHP -> CLI Interpreter -> 3 точки:
Нажимаем слева "+" ->
From Docker, Vargant ...
, выбираем пунктDocker Compose
.Server -> выбираем тот, что создали на прошлом шаге.
Configuration files -> выбираем
compose.yaml
из этого проекта.Service -> выбираем контейнер с PHP.
OK
Остальное на Ваш вкус, но в графе Lifecycle лучше оставить connect to existing container.
-
Settings -> PHP -> CLI Interpreter:
Выбрать только что созданный конфиг.
-
Settings -> PHP -> Servers:
Нажимаем "+", вводим названием (его нужно запомнить), указываем хост (127.0.0.1) и порт, который указали в
.env
для nginx.Включаем галочку
Use path mappings
и раскрываем папкуProjects Files
, на противapp
указываем/app
.
-
Settings -> PHP -> Debug:
В блоке
Xdebug
находим полеDebug port
и добавляем туда9001
.
-
Run -> Edit configurations:
Нажимаем на "+", переходим в
PHP Remote Debug
, указываем название.В поле Server указываем тот, что создали в п.5
IDE key (session_id) указываем тот, что указали в
.env
в полеXDEBUG_IDE_KEY
После, на верхней панели, где включается debug, выбираем вариант из п.7. Теперь можно ставить breakpoints, запускать debug и посылать запросы.