はじめに
WordPressは世界中で最も人気のあるコンテンツ管理システム(CMS)ですが、その開発環境の構築は時に複雑になりがちです。特に、複数のプロジェクトを抱える開発者にとって、環境間の依存関係やバージョンの違いは頭の痛い問題です。そこで登場するのがDockerです。
Dockerを使用することで、WordPressとその依存関係(データベースなど)をコンテナとして分離し、一貫性のある開発環境を迅速かつ簡単に構築・管理できます。
このガイドでは、DockerとDocker Composeを活用して、WordPressの開発環境をゼロから構築する手順を詳細に解説します。
これにより、環境構築の手間を省き、開発に集中できる理想的なワークフローを実現できるでしょう。
Dockerのインストール
Docker環境を構築する最初のステップは、お使いのオペレーティングシステムにDocker Desktopをインストールすることです。
Docker Desktopは、Docker Engine、Docker CLI、Docker Compose、Kubernetes(オプション)など、Dockerを始めるために必要なすべてのコンポーネントを統合したアプリケーションです。
Windowsの場合
- Docker公式サイトからDocker Desktop for Windowsのインストーラーをダウンロードします。
- ダウンローダーを実行し、指示に従ってインストールを進めます。
WSL 2(Windows Subsystem for Linux 2)の有効化が推奨されます。 - インストール完了後、Docker Desktopを起動し、タスクバーのアイコンが緑色になっていることを確認します。
macOSの場合
- Docker公式サイトからDocker Desktop for Macのインストーラーをダウンロードします。
- ダウンロードした
.dmgファイルをダブルクリックし、アプリケーションフォルダにドラッグ&ドロップします。 - アプリケーションフォルダからDocker Desktopを起動します。初回起動時には、必要なコンポーネントのダウンロードと設定が行われます。
- メニューバーのDockerアイコンが安定した状態になっていることを確認します。
インストールが完了したら、ターミナルで以下のコマンドを実行し、Dockerが正しくインストールされているか確認してください。
docker --version
docker-compose --versionWordPress環境の構築
Dockerのインストールが完了したら、いよいよWordPress環境の構築に取り掛かります。Docker Composeを使用することで、WordPressとMySQLデータベースという複数のサービスを一度に定義し、管理することができます。
docker-compose.ymlの作成
まず、プロジェクトのルートディレクトリにdocker-compose.ymlという名前のファイルを作成します。このファイルには、WordPressとMySQLのサービス定義を記述します。
version: '3.8'
services:
db:
image: mysql:8.0
container_name: wordpress_db
environment:
MYSQL_ROOT_PASSWORD: your_root_password # 任意のパスワードを設定
MYSQL_DATABASE: wordpress_db
MYSQL_USER: wordpress_user
MYSQL_PASSWORD: wordpress_password
volumes:
- db_data:/var/lib/mysql
ports:
- "3306:3306" # 必要であればホストのポートをマッピング
wordpress:
image: wordpress:latest
container_name: wordpress_app
depends_on:
- db
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress_db
WORDPRESS_DB_USER: wordpress_user
WORDPRESS_DB_PASSWORD: wordpress_password
volumes:
- ./wp-content:/var/www/html/wp-content # テーマやプラグインの永続化
ports:
- "8000:80" # ホストの8000番ポートをコンテナの80番ポートにマッピング
volumes:
db_data:docker-compose.ymlの解説:
version: '3.8': Docker Composeファイルのバージョンを指定します。services:: 定義するサービス(コンテナ)を記述します。db:: MySQLデータベースサービスを定義します。image: mysql:8.0: MySQL 8.0の公式イメージを使用します。container_name: wordpress_db: コンテナに分かりやすい名前を付けます。environment:: データベースの環境変数を設定します。これらはWordPressがデータベースに接続するために必要です。your_root_passwordは必ず強力なパスワードに変更してください。volumes: - db_data:/var/lib/mysql: データベースのデータを永続化するためのボリュームを定義します。これにより、コンテナを削除してもデータが失われることはありません。ports: - "3306:3306": ホストマシンの3306番ポートをコンテナの3306番ポートにマッピングします。これにより、ホストからデータベースに直接アクセスできます(必要であれば)。
wordpress:: WordPressアプリケーションサービスを定義します。image: wordpress:latest: 最新のWordPress公式イメージを使用します。container_name: wordpress_app: コンテナに分かりやすい名前を付けます。depends_on: - db:dbサービスが起動してからwordpressサービスを起動するように依存関係を設定します。environment:: WordPressがデータベースに接続するための環境変数を設定します。db:3306は、dbサービスの名前とポートを指定しています。volumes: - ./wp-content:/var/www/html/wp-content: WordPressのテーマやプラグイン、アップロードファイルなどをホストマシンのwp-contentディレクトリと同期させ、永続化します。ports: - "8000:80": ホストマシンの8000番ポートをコンテナの80番ポート(WordPressのデフォルトHTTPポート)にマッピングします。これにより、ブラウザからhttp://localhost:8000でWordPressにアクセスできるようになります。
volumes:: 永続化するボリュームを定義します。db_dataはデータベースのデータ用です。
WordPressの起動
docker-compose.ymlファイルを作成したら、ターミナルでそのファイルがあるディレクトリに移動し、以下のコマンドを実行します。
docker-compose up -dup:docker-compose.ymlに定義されたサービスを起動します。-d: デタッチモードで起動し、ターミナルを占有せずにバックグラウンドでコンテナを実行します。
このコマンドを実行すると、Docker ComposeがMySQLとWordPressのイメージをダウンロードし、コンテナを構築・起動します。初回はイメージのダウンロードに時間がかかる場合があります。
コンテナが正常に起動したことを確認するには、以下のコマンドを実行します。
docker-compose psStateがUpになっていれば成功です。
WordPressの初期設定
コンテナが起動したら、ブラウザを開き、http://localhost:8000にアクセスします。WordPressの初期設定画面が表示されるはずです。
- 言語の選択: 日本語を選択し、「続ける」をクリックします。
- ようこそ画面: 「さあ、始めましょう!」をクリックします。
- データベース接続情報: ここでは、
docker-compose.ymlで設定したデータベース情報を入力します。- データベース名:
wordpress_db - ユーザー名:
wordpress_user - パスワード:
wordpress_password - データベースホスト:
db(コンテナ名) - テーブル接頭辞:
wp_(デフォルトのままでOK)
入力後、「送信」をクリックします。
- データベース名:
- インストール実行: 「インストールを実行」をクリックします。
- WordPressへようこそ: サイトのタイトル、管理者ユーザー名、パスワード、メールアドレスを設定します。
- ユーザー名とパスワードは必ず控えておいてください。
- 「検索エンジンでの表示」は、開発環境なのでチェックを入れても構いませんが、本番環境では通常チェックを外します。
入力後、「WordPressをインストール」をクリックします。
- 成功!: インストールが完了したら、「ログイン」をクリックしてWordPressの管理画面にアクセスできます。
これで、Docker上で動作するWordPress環境の初期設定が完了しました。
データベースの管理
WordPress開発において、データベースの管理は非常に重要です。Docker環境では、phpMyAdminのようなツールを別途コンテナとして起動することで、ブラウザから簡単にデータベースを操作できます。
docker-compose.ymlにphpMyAdminサービスを追加してみましょう。
version: '3.8'
services:
db:
image: mysql:8.0
container_name: wordpress_db
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: wordpress_db
MYSQL_USER: wordpress_user
MYSQL_PASSWORD: wordpress_password
volumes:
- db_data:/var/lib/mysql
ports:
- "3306:3306"
wordpress:
image: wordpress:latest
container_name: wordpress_app
depends_on:
- db
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress_db
WORDPRESS_DB_USER: wordpress_user
WORDPRESS_DB_PASSWORD: wordpress_password
volumes:
- ./wp-content:/var/www/html/wp-content
ports:
- "8000:80"
phpmyadmin: # phpMyAdminサービスを追加
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin_app
depends_on:
- db
environment:
PMA_HOST: db # データベースサービスのコンテナ名
MYSQL_ROOT_PASSWORD: your_root_password # MySQLのrootパスワード
ports:
- "8080:80" # ホストの8080番ポートをphpMyAdminにマッピング
volumes:
db_data:docker-compose.ymlを更新したら、以下のコマンドでサービスを再起動します。
docker-compose up -d --no-deps --build phpmyadminまたは、すべてのサービスを再起動しても構いません。
docker-compose down
docker-compose up -dphpMyAdminが起動したら、ブラウザでhttp://localhost:8080にアクセスします。
ログイン画面で、ユーザー名rootとyour_root_password(docker-compose.ymlで設定したMySQLのrootパスワード)を入力してログインできます。
トラブルシューティング
Dockerを使ったWordPress環境構築でよく遭遇する問題とその解決策をまとめます。
ポートの競合
portsで指定したポートがすでに他のアプリケーションで使用されている場合、コンテナが起動できません。docker-compose.ymlのports設定で、ホスト側のポート番号を変更してください(例: 8000:80を8001:80に変更)。
データベース接続エラー
WordPressがデータベースに接続できない場合。
docker-compose.ymlのenvironmentセクションで、WORDPRESS_DB_HOSTがデータベースサービスのコンテナ名(この例ではdb)になっているか確認してください。- データベースのユーザー名、パスワード、データベース名がWordPressとMySQLの両方で一致しているか確認してください。
- MySQLコンテナが完全に起動する前にWordPressコンテナが起動しようとしている可能性があります。
depends_onが正しく設定されているか確認し、必要であればWordPressコンテナの起動を少し遅らせる設定(healthcheckなど)を検討してください。
ボリュームのマウントエラー
volumesで指定したパスに問題がある場合。
ホスト側のパス(例: ./wp-content)が正しいか、また必要な権限があるか確認してください。
WindowsやmacOSでは、Docker Desktopの設定で共有ドライブ/ファイル共有が有効になっていることを確認してください。
コンテナのログを確認する
問題が発生した場合は、コンテナのログを確認するのが最も有効なデバッグ方法です。
docker-compose logs wordpress
docker-compose logs dbまたは、すべてのサービスのログを見るには下記を入力してください。
bash docker-compose logsコンテナの再構築
設定ファイルを変更したにもかかわらず変更が反映されない場合や、コンテナの状態がおかしい場合は、一度コンテナを削除して再構築を試みてください。
bash docker-compose down # コンテナを停止・削除
docker-compose up -d --build # イメージを再構築して起動まとめ
このガイドでは、DockerとDocker Composeを使用してWordPressの開発環境を構築する手順を詳細に解説しました。Dockerを利用することで、以下のような多くのメリットを享受できます。
- 環境の一貫性: 開発チーム全員が同じ環境で作業できるため、「私のマシンでは動くのに…」といった問題を解消できます。
- 迅速なセットアップ: 数行のコマンドでWordPress環境を立ち上げることができ、新しいプロジェクトの開始や既存プロジェクトへの参加が容易になります。
- 分離と独立性: WordPressとデータベースがそれぞれ独立したコンテナで動作するため、互いに影響を与えることなく管理できます。
- ポータビリティ:
docker-compose.ymlファイルがあれば、どのDockerがインストールされたマシンでも同じ環境を再現できます。 - リソースの効率化: 必要なサービスだけを起動し、不要になったら簡単に停止・削除できるため、システムリソースを効率的に利用できます。
Dockerを使ったWordPress環境は、開発の効率を大幅に向上させ、よりスムーズなワークフローを実現します。このガイドが、あなたのWordPress開発の一助となれば幸いです。さらに高度な設定(SSL化、Nginxプロキシ、Xdebugなど)にも挑戦し、より堅牢な開発環境を構築してみてください。





