PHPは様々な外部プログラムと連携できます。その中にはLinuxでないと動かない外部プログラムもあり、そういったプログラムと連携するPHPプログラムをテストするにはLinux環境が不可欠です。一方で自分のよく使う開発環境はWindowsです。Windows上で動かしているDocker中にPHPプログラムと外部プログラムを入れて、PhpStormからDocker中のPHPでテストを行う方法を紹介します。
用意するのは外部プログラムのインストール方法を継ぎ足した適当なDockerFileです。とりあえずcentosベースのイメージに継ぎ足せばらしくなります。以下はRTKLIBを入れるDockerFileの例です。
FROM centos:7 # 省略 PHPとかnginxとかのインストール. LaraDockやDocker LaravelでGitをググるといい感じのモノが見つかる ARG RTKLIB_URL=https://github.com/tomojitakasu/RTKLIB.git WORKDIR /home/www RUN git clone ${RTKLIB_URL} WORKDIR /home/www/RTKLIB/app RUN make COPY ./rtklib_seeder/rtk_store /home/www/rtk_store COPY ./rtklib_seeder/base_station_signals /home/www/base_station_signals
これでローカルのWindows内にLinuxテスト環境ができました。後は次スクリーンショットの様にDocker内のPHPインタプリタをPhpStormで用いるインタプリタに設定。
スクリーンショットの様にPhpUnitをPhpStormから動かすだけでDocker内のPHPが動き、Docker内の外部プログラムを動かしてテストを行います。