Как настроить запуск PHPunit на PHPStorm + Windows WSL, Docker Desktop
Базовая настройка Докера в PHPStorm
Сначала нужно настроить подключение WSL к докеру.
Для этого просто выбираем "Docker for Windows" в File > Settings > Build, Execution, Deployment > Docker:
Настройка через Docker image
Так мы настраиваем запуск теста через Docker, с указанием какой именно имейдж использовать при запуске. PHPStorm будет запускать свой контейнер на базе указанного имейджа (FROM image) кажды раз при запуске теста и удалять его по завершению теста.
Путь /opt/project в настройках - это WorkingDir папка внутри создаваемого контейнера, в которую маунтится папка текущего проекта. Т.е. /opt/project - это папка текущего проекта.
Пример mounts конфига из контейнера со скринов ниже:
"HostConfig": {
"Binds": [
"\\wsl$\Ubuntu\home\domains\qr-product-nutrition:/opt/project:rw"
],
...
}
"Mounts": [
...
{
"Type": "bind",
"Source": "\\wsl$\Ubuntu\home\domains\qr-product-nutrition",
"Destination": "/opt/project",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
}
],Создаем CLI интерпритатор на базе Docker image:
Интерпритатор создан (выбираем его, если не выбралось автоматически):
Конфигурируем "Test Framework" под созданный интерпретатор
Это - конфиг для запуска тестов. Здесь мы будем использовать только что созданный интерпритатор:
Проверка
Пробуем запустить отдельный тест кейс и видим что все работает:
Заметки
Если в будущем вы Удалите CLI интерпритатор и создадите его заново, то в настройках Test Framework интерпритатор станет недоступным (скорее всего здесь он связывается по созданному ID интерпритатора). Понять существует ли интерпритатор можно обратив внимение на его название (оно будет undefined):
В этом случае вам нужно пересоздать интерпритатор (настройку) и выбрать его заново.
Если в будущем вы пересоздадите имейдж, то все также будет работать, важно только чтобы название имейджа не изменилось.
Настройка через docker-compose
Такой тип настройки будет использовать текущий контейнер который описан в docker-compose.yml файле. В этом случае PHPStom не будет создавать свой контейнер, а будет использовать "наш".
Если "наш" контейнер не запущен в момент запуска теста, то PHPStorm его запустит, используя настройки из docker-compose.yml файла.
Создаем CLI интерпритатор на базе docker-compose:
Настроим созданный интерпритатор:
- Переименуем (чтобы иметь более говорящее название).
- Укажем чтобы он подключался к существующему контейнеру (если не указать, то шторм будет создавать свой контейнер, на базе docker-compose.yml настроек).
- Проверим что все работает.
Выбираем интерпретатор в настройках PHP:
Конфигурируем "Test Framework" под созданный интерпретатор














