Docker の WordPress開発環境「WP Compose」をつくりました。
Vagrant (VirtualBox) による WordPress開発環境「VAW (Vagrant Ansible WordPress)」を 7,8年開発し続けていましたが、そろそろ開発環境を Mac (Apple chip) に完全に移行したいと思い、開発に着手してみました。
当初、docker-compose.yml ひとつのファイルだけで簡単に WordPressサイトを立ち上げられるので「開発環境はもう必要なさそうだなぁ」と思っていましたが。
やはり開発環境としては、HTTPSをサポートしたり、メールテストが不十分なところがあったり。複数の開発環境 (コンテナ) を立ち上げるには、localhost においてポートの割り振りを考えたり、使い続けるには面倒なところがある。ネット上に幾多ある技術系ブログにある「DockerでWordPressのローカル開発環境を構築する」の類の記事を見ると、ほぼ localhost ベースのローカル環境の初歩的な部分しか解説がないので。
本格的に開発環境として使っていくためには、もう一歩踏み込んだところが必要だなと。Dockerの開発知見を溜めつつ、開発生産性の向上を目指して開発環境を目指してみました。
目指したこと
目指したことは、
- Mac (Apple chip) に最適化
- 今までの開発リソースがそのまま使える (ドメインが使える、テストリソースがそのまま使える)
- テスト環境の整備の手間なくユニットテストができる
- 設定ファイル (.env) で開発環境のカスタマイズができたり、複数の開発環境の管理を容易にする
- 開発リソースを開発環境から分離管理
特徴
開発の結果、以下のような WordPress 開発環境になりました。
詳しい「WP Compose」の技術要件や使い方は、GitHub にある README ドキュメントを見てください。
- localhost でサクッと WordPressサイトが立ち上げられるし、開発が捗るビルド・ユニットテスト用のコンテナも立ち上げられる。
- コマンドラインツール WP-CLI を使ったり、HTTPS をサポート、MailHog によるメールテスト
- 面倒なポートの管理をしないで複数の開発環境を立ち上げられるアプローチに Local Loopback Address で開発用 IPアドレスを決めるだけ。hosts でポート指定の必要なくドメイン名でアクセスできるように。
成果
実際に Docker開発環境にしてみて。
- Intel chip Mac 上での Vagrant (VirtualBox) 開発環境から Docker開発環境へスムーズな完全移行 (データベースデータの変更をすることなくドメイン名も引き継ぎ)
- いままで開発しているテーマやプラグインのリソースを開発環境のリソースと一体化していた状態から分離管理した (ディレクトリレイアウトが明確に、誤って削除を避けられる)
- 開発用IPアドレスを複数の開発環境に振り分けて整備が容易になった
- ユニットテスト用のコンテナで開発しているテーマやプラグインをビルドしたり、ユニットテストを今までのテストリソースを手直しなく、損なうことなく実施
今後を見据えて
WordPress のテーマやプラグインを開発するに際して最適な開発環境がなかなか見つからない。どのような開発環境を選べばいいのか。開発生産性を高めたい。など悩みも多いものです。
最近の WordPress開発は、開発言語が PHP から React (JavaScript) に比重が移りつつあり、スキルの再構築 (学び直し) や WordPress自体どんどん変わっています。その変化についていけなくなり、テーマやプラグインを積極的に開発する開発者も少なくなっている感があります。
そのような中、開発環境や基盤整備にリソースを割けることが難しいことが障害になっていることも多いと思います。WordPress開発環境「WP Compose」が、少しでも開発生産性に寄与でき、お役に立てれば幸いです。
ぜひ、WordPress開発環境「WP Compose」を試してみてください。