我在IntelliJ(2019.3.2,Build#IU-193.6015.39)中加载了一个具有以下结构的PHP symfony项目(省略了与README等无关的文件):
<project_root>
+- src/
+- tests/
+- vendor/
| +- autoload.php
+- .env
+- composer.json
+- composer.lock
+- docker-compose.yml
+- Dockerfile
+- phpunit.xml
+- phpunit-custom.xml
通过docker-compose将项目解释器设置为使用远程docker(适用于Mac的Docker),并且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
而配置文件的路径必须作为UI中的绝对路径提供。
输入项目相对路径不起作用。
因此,似乎没有办法告诉IntelliJ研究实际安装项目的路径。
最佳答案
我有一个类似的问题,我在Intellij设置中找不到任何选项,因此我需要手动更改.idea
目录中的路径。尝试在/opt/project
目录中搜索.idea
,然后将其替换为/var/www
。
就我而言,此问题是由Intellij Ultimate 2019.3中的Python插件引起的
关于php - 使用docker-compose中的docker远程解释器在Intellij中运行PHPUnit期望 “/opt/project”中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60337001/