在带有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)的更好集成,现在可以执行以下操作(或阅读本文 ):

命令行:

  1. 拉取phpunit Docker镜像: docker pull phpunit/phpunit
  2. (Mac和Windows) 将Docker套接字桥接到API_URL socat -d TCP-LISTEN:2376,range=127.0.0.1/32,reuseaddr,fork UNIX:/var/run/docker.sock

然后Phpstorm:

  1. 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:2376tcp://localhost:2376
  2. configuration远程解释器:
    • 转到设置 – >语言和框架 – > PHP
    • 通过以下方式创build一个新的PHP CLI解释器:
      • 点击...然后+和“远程…”
      • selectDocker
        • ServerImage:
        • 图片名称: phpunit/phpunit:latest
        • PHP可执行文件: php
  3. configurationPhpunit:
    • 转到设置 – >语言和框架 – > PHP – > PHPUnit
    • 创build新的Phpunitconfiguration( +然后“通过远程解释…”并select
    • 设置Use Composer Autoloader
    • 脚本path: /opt/project/vendor/autoload.php
    • 默认configuration文件: /opt/project/phpunit.xml.dist
  4. 尝试运行你的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镜像作为远程解释器。