【发布时间】:2016-02-04 07:12:52
【问题描述】:
我想配置我的 PhpStorm IDE 以在我的 Docker 容器中运行 PHPUnit 测试。
似乎我只能使用本地 PHP 可执行文件或通过 SSH 的可执行文件作为测试的解释器。
我可以在我的 PHP 容器上安装 SSH 服务,但它似乎有点笨拙,网上的文章不鼓励在容器上安装 SSH 服务。
为了尝试让本地解释器正常工作,我尝试创建一个 bash 脚本来代理容器内的 PHP 调用,如下所示:
#!/usr/bin/env bash
# Run PHP through Docker
docker exec -t mycontainer_php_1 php "$@"
当我自己运行它时效果很好,但是当我将 PhpStorm 指向它作为本地 PHP 解释器时,它不会将其识别为有效的 PHP 可执行文件。
那么有什么好方法可以让它工作呢?
【问题讨论】:
-
"... 它无法将其识别为有效的 PHP 可执行文件。" 这是因为 IDE 需要解释器的某些(标准)输出来验证其版本和设置。在这方面我可能会推荐:1)首先使用真正的php在PhpStorm中创建PHP解释器(或按原样将所有参数传递给php); 2) 一旦它被添加到 PhpStorm,改变你的脚本来使用你的 docker。附言新发布的 v10 对 Docker 有一些支持——你看到了吗?它可以满足您的需求吗?
-
由于我在Docker中代理php,理论上它也应该能够通过调用我给的脚本和
--version来确定版本。你是说我应该尝试通过将 PHPStorm 指向一个真正的本地 php 解释器来欺骗它,以便它识别它,然后将它换成 bash 脚本?我安装了 PHPStorm 10,但它似乎唯一的 Docker 功能是与部署相关的。 -
是的,这就是我的想法。但是如果你想得更远一点..它很可能不会工作(我的意思是后者——运行 PHPUnit 测试),因为 IDE 使用帮助脚本进行集成(它需要以某种方式部署在那里,除非它是自动完成的) + 路径很可能与本地路径不同...
-
这将是下一个问题。现在我只想让 PHPStorm 能够识别在 Docker 中运行的 PHP 可执行文件。
-
我会使用 SSH 方法。没有什么“hacky”,它是如何与 vagrant box 一起工作的。它更加强大,经过 JetBrains 和用户的测试。我认为在 dev 机器上的容器中安装 sshd 并没有什么坏处。
标签: php docker phpunit phpstorm