У меня есть проект PHP symfony, загруженный в IntelliJ (2019.3.2, сборка # IU-193.6015.39) со следующей структурой (опущены ненужные файлы, такие как README, et c):
<project_root>
+- src/
+- tests/
+- vendor/
| +- autoload.php
+- .env
+- composer.json
+- composer.lock
+- docker-compose.yml
+- Dockerfile
+- phpunit.xml
+- phpunit-custom.xml
Интерпретатор проекта настроен на использование удаленного docker (Docker для Ma c) с помощью docker -compose, и IntelliJ правильно определяет интерпретатор и отладчик:
docker -compose.yml имеет следующую структуру:
version: "2"
services:
app:
build: .
env_file:
- ./.env
ports:
- 8888:80
volumes:
- ./:/var/www/
- .docker/app-dev/nginx/fastcgi-timeouts.conf:/etc/nginx/fastcgi-timeouts.conf
- .docker/app-dev/php/conf.d/00_opcache.ini:/etc/php/conf.d/00_opcache.ini
- .docker/app-dev/php/conf.d/30_xdebug.ini:/etc/php/conf.d/30_xdebug.ini
- .docker/app-dev/php/php-fpm-settings.conf:/etc/php/php-fpm-settings.conf
db:
image: mysql:5.6
environment:
MYSQL_DATABASE: project_database
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: master_password
ports:
- 3306:3306
volumes:
- mysql-data:/var/lib/mysql:delegated
- .docker/db/mysqld.cnf:/etc/mysql/conf.d/mysqld.cnf
- .docker/db/000-structure.sql:/docker-entrypoint-initdb.d/000-structure.sql
- .docker/db/001-data.sql:/docker-entrypoint-initdb.d/001-data.sql
- .docker/db/002-test-data.sql:/docker-entrypoint-initdb.d/002-test-data.sql
volumes:
mysql-data:
Таким образом, проект монтируется в контейнер /var/www
. После ускорения проекта с docker-compose up -d
он доступен на http://localhost:8888
, как и ожидалось. Но запуск модульных тестов через IntelliJ не работает, так как получающаяся команда ожидает конфигурацию в папке /opt/project
контейнера:
[docker-compose://[/Users/me/projects/symfony_with_db/docker-compose.yml]:app/]:php /opt/.phpstorm_helpers/phpunit.php --configuration /opt/project/phpunit-custom.xml
Could not read "/opt/project/phpunit-custom.xml".
Process finished with exit code 1
В то время как путь к файлу конфигурации должен быть указан как абсолютный путь в пользовательском интерфейсе.
Ввод пути относительно проекта не работает. Так что, похоже, нет никакого способа заставить IntelliJ посмотреть на путь, по которому фактически монтируется проект.