在带有PhpStorm的Docker容器中运行PHPUnit
我想configuration我的PhpStorm IDE以在我的Docker容器中运行PHPUnittesting。
似乎我只能使用本地PHP可执行文件,或通过SSH作为testing的解释器。
我可以在我的PHP容器上安装一个SSH服务,但这看起来有点像一个黑客解决scheme,在线文章阻止在容器上安装SSH服务。
为了尝试让本地解释器工作,我尝试创build一个bash脚本来代理对容器中的PHP调用,如下所示:
#!/usr/bin/env bash # Run PHP through Docker docker exec -t mycontainer_php_1 php "$@"
当我自己运行它时,这是完美的,但是当我将PhpStorm指向本地PHP解释器时,它不会将其识别为有效的PHP可执行文件。
那么获得这个工作的好方法是什么?
这工作:
DIR=$(dirname $(readlink -f "$0")) docker run --rm --sig-proxy=true -v ${DIR}:${DIR} -w ${DIR} --pid=host php:cli php "$@"
只是把它放在一些文件中,chmod + x it =>只是用想法testing过,被认出就好了:)
让所有phpstorms帮手脚本真正起作用的技巧就是安装php可执行文件所在的目录。如果这个脚本不在你的phpunit可执行文件和源代码的文件夹中,你将不得不扩展它来安装它们。
(这里重要的一点是:它们必须被装载到容器和主机obv中的同一个文件夹:))
现在编辑几个月后,但也许对一些有帮助:在这里用WordPress的例子: http : //original-brownbear.github.io/2015/12/23/phpunit-docker-phpstorm.html
随着PhpStorm 与Docker引擎 (包括Docker for Mac)的更好集成,现在可以执行以下操作(或阅读本文 ):
命令行:
- 拉取
phpunit
Docker镜像:docker pull phpunit/phpunit
- (Mac和Windows) 将Docker套接字桥接到
API_URL
:socat -d TCP-LISTEN:2376,range=127.0.0.1/32,reuseaddr,fork UNIX:/var/run/docker.sock
然后Phpstorm:
- configuration连接到Docker引擎:
- 转到设置 – >构build,执行,部署 – > Docker
- 创build一个新的Dockerconfiguration,并将
API URL
设置为:- Linux:
unix:///var/run/docker.sock
- Windows和Mac:
http://127.0.0.1:2376
:http://127.0.0.1:2376
tcp://localhost:2376
或tcp://localhost:2376
- Linux:
- configuration远程解释器:
- 转到设置 – >语言和框架 – > PHP
- 通过以下方式创build一个新的PHP CLI解释器:
- 点击
...
然后+
和“远程…” - selectDocker :
- ServerImage:
- 图片名称:
phpunit/phpunit:latest
- PHP可执行文件:
php
- 点击
- configurationPhpunit:
- 转到设置 – >语言和框架 – > PHP – > PHPUnit
- 创build新的Phpunitconfiguration(
+
然后“通过远程解释…”并select - 设置
Use Composer Autoloader
- 脚本path:
/opt/project/vendor/autoload.php
- 默认configuration文件:
/opt/project/phpunit.xml.dist
- 尝试运行你的testing!
我知道你说你听说在docker集装箱的SSH是不好的,但我认为,因为PhpStorm不支持docker的EXE远程运行脚本这不是一个坏的select。 您可以使用PhpStorm中的SSH将Docker容器设置为远程php解释器,然后设置远程PHPUnitconfiguration。
您可以在这里看到一步一步的指南:
https://mickadoo.github.io/php,phpunit,docker/2016/10/12/phpunit-docker.html
更新:你不需要使用SSH了。 PhpStorm现在支持docker,你可以运行PHPunit testing,只需使用一个安装了PHPUnit的PHP docker镜像作为远程解释器。