首页 > 解决方案 > 在 vagrant 上的 PHP docker 容器中使用 PHPUnit 的 PhpStorm

问题描述

我有一个带有几个容器的 Vagrant 盒子,一个容器用于 PHP 引擎。

通常,我在 Vagrant 框中运行我的测试,例如:

docker run <my_specific_parameteres> remote.docker.container.php7.2 bin/phpunit --coverage-clover -c phpunit.xml.dist

但是,我想用 PhpStorm 运行它。有可能的?如果是的话,任何帮助,因为我不知道如何正确配置我的 PhpStorm 以根据需要运行 PHPUnit。

标签: dockerphpunitvagrantphpstorm

解决方案


这有点复杂,因为有一个额外的虚拟化层(主机 => Vagrant VM => Docker),但这是可能的。

让我们就这些达成一致:

  • /home/PhpstormProjects/theProject是您的源在主机上的路径。
  • /var/www/html/theProject是您的源映射到的 Vagrant VM 路径。
  • /opt/theProject是 Vagrant 路径与卷映射绑定到的容器路径。

首先,您需要配置 Docker 守护程序以侦听 TCP 端口: https ://success.docker.com/article/how-do-i-enable-the-remote-api-for-dockerd

然后,您需要在 PhpStorm 添加这些 Docker 服务器Settings | Build, Execution, Deployment | Docker

之后,在 PhpStorm 中使用所需的镜像添加一个 Docker 远程解释器Settings | Languages & Frameworks | PHP

您需要稍后设置以下映射:

  • 码头集装箱 | 卷绑定:
    • 容器路径:/opt/theProject
    • 主机路径:/var/www/html/theProject
  • 路径映射:添加一个新的映射(因为默认的不正确):
    • 本地路径:/home/PhpstormProjects/theProject
    • 远程路径:/opt/theProject

之后,为这个 Docker 解释器配置 PHPUnit Settings | Languages & Frameworks | PHP | Test Frameworks,它应该能够解析路径 OK。

基本上就是这样,你应该好好去。不幸的是,没有将自定义参数传递给 Docker 的选项:https ://youtrack.jetbrains.com/issue/IDEA-181088

如果有任何问题,请提交支持请求:https ://intellij-support.jetbrains.com/hc/en-us


推荐阅读