1. HOME
  2. WordPress
  3. DockerでWordPress環境を構築する方法:開発効率を最大化するガイド
WordPress - 2025-07-14

DockerでWordPress環境を構築する方法:開発効率を最大化するガイド

はじめに

WordPressは世界中で最も人気のあるコンテンツ管理システム(CMS)ですが、その開発環境の構築は時に複雑になりがちです。特に、複数のプロジェクトを抱える開発者にとって、環境間の依存関係やバージョンの違いは頭の痛い問題です。そこで登場するのがDockerです。
Dockerを使用することで、WordPressとその依存関係(データベースなど)をコンテナとして分離し、一貫性のある開発環境を迅速かつ簡単に構築・管理できます。

このガイドでは、DockerとDocker Composeを活用して、WordPressの開発環境をゼロから構築する手順を詳細に解説します。
これにより、環境構築の手間を省き、開発に集中できる理想的なワークフローを実現できるでしょう。

Dockerのインストール

Docker環境を構築する最初のステップは、お使いのオペレーティングシステムにDocker Desktopをインストールすることです。
Docker Desktopは、Docker Engine、Docker CLI、Docker Compose、Kubernetes(オプション)など、Dockerを始めるために必要なすべてのコンポーネントを統合したアプリケーションです。

Windowsの場合

  1. Docker公式サイトからDocker Desktop for Windowsのインストーラーをダウンロードします。
  2. ダウンローダーを実行し、指示に従ってインストールを進めます。
    WSL 2(Windows Subsystem for Linux 2)の有効化が推奨されます。
  3. インストール完了後、Docker Desktopを起動し、タスクバーのアイコンが緑色になっていることを確認します。

macOSの場合

  1. Docker公式サイトからDocker Desktop for Macのインストーラーをダウンロードします。
  2. ダウンロードした.dmgファイルをダブルクリックし、アプリケーションフォルダにドラッグ&ドロップします。
  3. アプリケーションフォルダからDocker Desktopを起動します。初回起動時には、必要なコンポーネントのダウンロードと設定が行われます。
  4. メニューバーのDockerアイコンが安定した状態になっていることを確認します。

インストールが完了したら、ターミナルで以下のコマンドを実行し、Dockerが正しくインストールされているか確認してください。

docker --version
docker-compose --version

WordPress環境の構築

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 -d
  • up: docker-compose.ymlに定義されたサービスを起動します。
  • -d: デタッチモードで起動し、ターミナルを占有せずにバックグラウンドでコンテナを実行します。

このコマンドを実行すると、Docker ComposeがMySQLとWordPressのイメージをダウンロードし、コンテナを構築・起動します。初回はイメージのダウンロードに時間がかかる場合があります。

コンテナが正常に起動したことを確認するには、以下のコマンドを実行します。

docker-compose ps

StateUpになっていれば成功です。

WordPressの初期設定

コンテナが起動したら、ブラウザを開き、http://localhost:8000にアクセスします。WordPressの初期設定画面が表示されるはずです。

  1. 言語の選択: 日本語を選択し、「続ける」をクリックします。
  2. ようこそ画面: 「さあ、始めましょう!」をクリックします。
  3. データベース接続情報: ここでは、docker-compose.ymlで設定したデータベース情報を入力します。
    • データベース名: wordpress_db
    • ユーザー名: wordpress_user
    • パスワード: wordpress_password
    • データベースホスト: db (コンテナ名)
    • テーブル接頭辞: wp_ (デフォルトのままでOK)
      入力後、「送信」をクリックします。
  4. インストール実行: 「インストールを実行」をクリックします。
  5. WordPressへようこそ: サイトのタイトル、管理者ユーザー名、パスワード、メールアドレスを設定します。
    • ユーザー名とパスワードは必ず控えておいてください。
    • 「検索エンジンでの表示」は、開発環境なのでチェックを入れても構いませんが、本番環境では通常チェックを外します。
      入力後、「WordPressをインストール」をクリックします。
  6. 成功!: インストールが完了したら、「ログイン」をクリックして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 -d

phpMyAdminが起動したら、ブラウザでhttp://localhost:8080にアクセスします。
ログイン画面で、ユーザー名rootyour_root_passworddocker-compose.ymlで設定したMySQLのrootパスワード)を入力してログインできます。

トラブルシューティング

Dockerを使ったWordPress環境構築でよく遭遇する問題とその解決策をまとめます。

ポートの競合

portsで指定したポートがすでに他のアプリケーションで使用されている場合、コンテナが起動できません。
docker-compose.ymlports設定で、ホスト側のポート番号を変更してください(例: 8000:808001:80に変更)。


データベース接続エラー

WordPressがデータベースに接続できない場合。

  • docker-compose.ymlenvironmentセクションで、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など)にも挑戦し、より堅牢な開発環境を構築してみてください。