我想配置我的PhpStorm IDE以在我的Docker容器中运行PHPUnit测试。
似乎我只能使用本地PHP可执行文件或通过SSH作为测试的解释器。
我可以在我的PHP容器上安装SSH服务,但这似乎是一个hacky解决方案,在线文章不鼓励在容器上安装SSH服务。
为了尝试让本地解释器工作,我尝试创建一个bash脚本来代理容器内对PHP的调用,如下所示:
#!/usr/bin/env bash
# Run PHP through Docker
docker exec -t mycontainer_php_1 php "$@"
当我自己运行它时,这非常有效,但当我将PhpStorm指向它作为本地PHP解释器时,它不会将其识别为有效的PHP可执行文件。
那么有什么好办法可以让它发挥作用?
答案 0 :(得分:11)
PhpStorm现在有better integration with Docker engine(包括Docker for Mac),您现在可以执行以下操作(或read this article):
命令行:
phpunit
Docker图片: docker pull phpunit/phpunit
API_URL
: socat -d TCP-LISTEN:2376,range=127.0.0.1/32,reuseaddr,fork UNIX:/var/run/docker.sock
然后是Phpstorm:
API URL
设置为:
unix:///var/run/docker.sock
http://127.0.0.1:2376
或tcp://localhost:2376
...
然后+
和'远程...'phpunit/phpunit:latest
php
+
然后'通过远程解释器...'并选择Use Composer Autoloader
/opt/project/vendor/autoload.php
/opt/project/phpunit.xml.dist
答案 1 :(得分:9)
这有效:
DIR=$(dirname $(readlink -f "$0"))
docker run --rm --sig-proxy=true -v ${DIR}:${DIR} -w ${DIR} --pid=host php:cli php "$@"
把它放在一些文件中,chmod + x it =>只是用想法进行测试并且被认可得很好:)
让所有phpstorms帮助程序脚本正常工作的技巧是安装php可执行文件所在的目录。 如果此脚本不在您的phpunit可执行文件和源代码的文件夹中,则必须将其扩展为也可以安装它们。
(这里重点注意:它们必须安装在容器和主机obv中的同一个文件夹中:))
几个月后编辑,但可能对某些人有帮助: 在这里用WordPress示例解决了这个问题: http://original-brownbear.github.io/2015/12/23/phpunit-docker-phpstorm.html
答案 2 :(得分:0)
我知道你说你在docker容器中听到ssh很糟糕,但我认为既然PhpStorm不支持docker的exec来远程运行脚本,那么这不是一个糟糕的选择。您可以在PhpStorm中使用SSH将docker容器设置为远程php解释器,然后只需设置远程PHPUnit配置。
您可以在此处查看分步指南:
https://mickadoo.github.io/php,phpunit,docker/2016/10/12/phpunit-docker.html
更新:您不再需要使用SSH了。 PhpStorm现在支持docker,只需使用安装了PHPUnit作为远程解释器的PHP docker镜像运行PHP单元测试。