PhpStorm IDEを設定して、Dockerコンテナ内でPHPUnitテストを実行します。
テストのインタープリターとして、ローカルのPHP実行可能ファイル、またはSSHを介した実行可能ファイルの使用に制限されているようです。
PHPコンテナにSSHサービスをインストールできましたが、ちょっとしたハッキングソリューションのように思えます。オンラインの記事では、コンテナにSSHサービスをインストールすることをお勧めしません。
ローカルインタープリターを動作させるために、次のように、コンテナ内でPHPへの呼び出しをプロキシするbashスクリプトを作成してみました。
#!/usr/bin/env bash
# Run PHP through Docker
docker exec -t mycontainer_php_1 php "$@"
これは自分で実行すると完全に機能しますが、PhpStormをローカルPHPインタープリターとして指定すると、有効なPHP実行可能。
それで、これを機能させる良い方法は何ですか?
PhpStormが Dockerエンジンとのより良い統合 (Mac用Dockerを含む)になったので、次のことを行うことができます(または この記事を読む ):
コマンドライン:
phpunit
Dockerイメージをプルします:_docker pull phpunit/phpunit
_API_URL
_:_socat -d TCP-LISTEN:2376,range=127.0.0.1/32,reuseaddr,fork UNIX:/var/run/docker.sock
_にブリッジしますそしてPhpstorm:
API URL
_を次のように設定して、新しいDocker構成を作成します。unix:///var/run/docker.sock
_http://127.0.0.1:2376
_または_tcp://localhost:2376
_...
_をクリックしてから_+
_および「リモート...」をクリックしますphpunit/phpunit:latest
_php
+
_を作成してから、「リモートインタープリター...」を選択して、Use Composer Autoloader
_を設定/opt/project/vendor/autoload.php
_/opt/project/phpunit.xml.dist
_これは動作します:
DIR=$(dirname $(readlink -f "$0"))
docker run --rm --sig-proxy=true -v ${DIR}:${DIR} -w ${DIR} --pid=Host php:cli php "$@"
それをいくつかのファイルに入れて、chmod + x it =>ただアイデアでテストし、うまく認識されています:)
すべてのphpstormヘルパースクリプトを実際に動作させるための秘trickは、php実行可能ファイルが存在するディレクトリをマウントすることです。このスクリプトがphpunit実行可能ファイルとソースコードのフォルダーにない場合は、それらもマウントするように拡張する必要があります。
(ここで重要な補足事項:それらは、コンテナとホストobvの同じフォルダにマウントする必要があります:))
数か月後に編集しますが、一部の人にとっては役立つかもしれません。ここでWordPressの例を使用して解決しました: http://original-brownbear.github.io/2015/12 /23/phpunit-docker-phpstorm.html
Dockerコンテナのsshが悪いと聞いたことはありますが、PhpStormはスクリプトをリモートで実行するdockerのexecをサポートしていないので、悪い選択肢ではないと思います。 PhpStorm内でSSHを使用して、リモートphpインタープリターとしてdockerコンテナーをセットアップし、リモートPHPUnit構成をセットアップするだけです。
ここでステップバイステップガイドを見ることができます:
https://mickadoo.github.io/php,phpunit,docker/2016/10/12/phpunit-docker.html
更新:もうSSHを使用する必要はありません。 PhpStormはdockerをサポートするようになりました。リモートインタープリターとしてPHPUnitをインストールしたPHP dockerイメージを使用するだけで、PHP単体テストを実行できます。