Docker の WordPress で PHPUnit を試してみる

先日の WordPress Meetup で Docker 環境を試しました。
ゆるウェブもくもく会 #1 @ミュゼ灘屋

当日は phpunit コマンドが実行できることを確認して終了。
その後、実際にプラグインを追加してテストが通るところまで確認できたので、いくつか試したことをメモっておきます。

まずはこちら。Docker公式のドキュメント。
Quickstart: Compose and WordPress
これでローカルの起動までは簡単にできるのですが、WordPressのファイルがホスト側にマウントされないので、
Dockerにシェルで入って操作、編集する必要があります。

次に参考にさせていただいた記事。
Docker ComposeでWordPressを構築する
こちらだと docker-compose.yml を置いた場所に /html/ というフォルダができるので、ここから WordPress の各種ファイル操作ができます。

ただしこの環境だと phpunit まわりが入っていないので、必要なコマンド群を手作業でインストールする必要があります。
WordPressのイメージのカスタマイズで参考にした記事がこちら。

Custom WordPress Docker Setup

Dockerfile を編集して必要なコマンドをインストールすれば良さそう。
と調べているうちに、必要なものが一通り揃ったものがありました。感謝。

akahigeg/wordpress-plugin-unittest-on-docker – GitHub

こちらのソース一式をクローンなりダウンロードなりして、

$ docker-compose up -d

とすれば、phpunit用にカスタマイズされたWordPressのイメージで起動できます。
Dockerfileを編集した場合は、

$ docker-compose down

して、

$ docker-compose build
$ docker-compose up -d

という操作をすれば良さそうです。

少し気になるのが Docker 内のファイルのパーミッション。
この環境だと my-plugin の owner が root になるようで、

$ docker-compose exec --user www-data wordpress bash

このようなユーザー指定で操作を試しているところです。

補足

site health を開いて、不要なテーマを削除しようとすると FTP ログインが求められたので、
wp-config.phpを開いて、

define('FS_METHOD','direct');

を追加しました。