繁体   English   中英

使用PhpStorm在Docker容器中运行PHPUnit

[英]Running PHPUnit within a Docker container with PhpStorm

我想配置我的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可执行文件。

那么什么是让这个工作的好方法?

由于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. 配置与Docker引擎的连接:
    • 转到设置 - >构建,执行,部署 - > Docker
    • 创建一个新的Docker配置,其API URL设置为:
      • Linux: unix:///var/run/docker.sock
      • Windows和Mac: http://127.0.0.1:2376http://127.0.0.1:2376 tcp://localhost:2376tcp://localhost:2376
  2. 配置远程解释器:
    • 转到设置 - >语言和框架 - > PHP
    • 通过以下方式创建新的PHP CLI解释器:
      • 单击...然后+和'远程...'
      • 选择Docker
        • ServerImage:
        • 图片名称: phpunit/phpunit:latest
        • PHP可执行文件: php
  3. 配置Phpunit:
    • 转到设置 - >语言和框架 - > PHP - > PHPUnit
    • 创建新的Phpunit配置( +然后'通过远程解释器...'并选择
    • 设置Use Composer Autoloader
    • 脚本路径: /opt/project/vendor/autoload.php
    • 默认配置文件: /opt/project/phpunit.xml.dist
  4. 尝试运行测试!

这有效:

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

我知道你说你在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单元测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM