Spin Up a Client Dev Environment in 5 Minutes with Docker × WP-CLI

受託のWordPress案件で毎回環境構築に30分以上かかっていませんか? Docker ComposeとWP-CLIを組み合わせたテンプレートを使えば、新規案件の開発環境をわずか5分で立ち上げられます。本記事では、実際に制作現場で使い込んだdocker-compose.ymlの雛形と初期設定スクリプトを解説します。

なぜDockerなのか — MAMP/XAMPPとの決別

ローカル開発環境としてMAMPやXAMPPを使っている制作者はまだ多いですが、受託案件を複数並行で進める場合、いくつかの限界があります。PHPバージョンの切り替えが面倒、案件ごとのデータベースの管理が煩雑、チームメンバーとの環境差異が発生しやすい、といった問題です。

Dockerを使うと、案件ごとに独立したコンテナを作成でき、PHP/MySQL/Nginxのバージョンを案件の本番環境に合わせて固定できます。docker-compose.ymlひとつで環境をコード化できるため、チームメンバーに渡しても同じ環境が再現されます。環境の「秘伝のタレ」問題から解放されるのが最大のメリットです。

docker-compose.ymlの雛形

実用的なdocker-compose.ymlの設計ポイントを解説します。3つのサービスで構成します。wpサービス(WordPress本体)、dbサービス(MySQL 8.0)、phpmyadminサービス(データベース管理用)です。

wpサービスではWordPressの公式イメージを使用し、ボリュームマウントでテーマディレクトリとプラグインディレクトリをホストマシンと共有します。これにより、ホスト側のエディタでテーマファイルを編集するとリアルタイムでコンテナ内に反映されます。環境変数でWordPressのデータベース接続情報を設定し、WP_DEBUGをtrueにして開発中のエラーを検出しやすくします。

ポート番号は案件ごとに変えるのがポイントです。たとえば案件Aは8080、案件Bは8081のように割り当てると、複数案件を同時に起動できます。ポート番号の管理はREADME.mdに一覧を書くか、.envファイルで変数化しておくと混乱を防げます。

WP-CLIによる初期設定の自動化

Dockerコンテナが起動したら、WP-CLIで初期設定を自動化します。setup.shスクリプトを用意し、以下の処理を一括実行します。

  • WordPress本体のインストール:wp core installで管理者アカウント、サイトタイトル、URLを設定します。パスワードは開発環境用なので簡易的なもので構いません。
  • 日本語化:wp language core install ja && wp site switch-language jaで日本語ロケールに切り替えます。タイムゾーンもwp option update timezone_string Asia/Tokyoで設定します。
  • パーマリンク設定:wp rewrite structure /%postname%/で投稿名ベースのURLに変更します。受託案件ではほぼ必須の設定です。
  • 不要プラグインの削除:wp plugin delete akismet hello でプリインストールされた不要プラグインを削除します。
  • テーマの有効化:wp theme activate mytheme で開発中のテーマを有効にします。テーマファイルはDockerのボリュームマウントで共有されているため、すぐに反映されます。

このスクリプトをMakefileのターゲットにしておくと、make setupの1コマンドで初期設定が完了します。新メンバーがプロジェクトに参加した際も、READMEに「make setupを実行」と書いておくだけで済みます。

実用Tips:現場で使える工夫

開発環境をさらに使いやすくするTipsを紹介します。

メール送信のテストにはMailHogを追加サービスとして組み込みます。docker-compose.ymlにmailhogサービスを追加し、WordPressのSMTP設定をMailHogに向けると、フォーム送信のテストメールをブラウザ上で確認できます。本番のメールサーバーに誤送信するリスクがなくなります。

データベースのスナップショットも活用しましょう。wp db exportでSQLダンプを取得し、プロジェクトリポジトリに含めておけば、make db-importでいつでも特定の状態に戻せます。テスト用の投稿データ、固定ページ、メニュー構造を含んだスナップショットを用意しておくと、デモ環境の構築も瞬時にできます。

uploads.iniでPHPの設定をカスタマイズするのも重要です。デフォルトではファイルアップロードの上限が2MBですが、受託案件では高解像度画像を扱うことが多いため、upload_max_filesizeを64MB程度に引き上げておきます。post_max_sizeも同様に調整します。このファイルもdocker-compose.ymlでボリュームマウントしてコンテナ内に適用します。

テンプレートの運用と発展

このテンプレートをGitリポジトリとして管理し、新規案件のたびにクローンして使います。案件固有の設定は.envファイルに分離しておくと、テンプレート本体を汚さずにカスタマイズできます。プロジェクト名、ポート番号、PHPバージョン、WordPress バージョンを.envで変数化しておくと便利です。

さらに発展させるなら、GitHub Actionsと連携してPR作成時にdocker compose upとテストを自動実行する仕組みも構築できます。ただし受託案件では過剰な自動化はメンテナンスコストが上回ることもあるため、チームの規模とプロジェクトの期間に応じて判断してください。

Docker×WP-CLIの環境テンプレートは、一度作ってしまえば案件のたびに累積的にリターンを生み出します。最初の構築に半日かけても、10案件で使えば1案件あたり2〜3分の投資です。まずは次の案件から試してみてください。

Build WordPress sites faster.

An investment that pays for itself in a single project.

Get started now

One-time ¥7,800 (tax incl.) · Unlimited sites · Client work OK