このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Docker超入門:開発環境コンテナ:WordPress+MySQL

開発環境コンテナ:WordPress+MySQL

今回は、Docker Compose を使って WordPress と MySQL のコンテナを構築し、
ローカルで手軽に WordPress 開発環境を作る方法を解説していきます。
この構成を覚えれば、ブログサイトやCMSサイトの試作がとてもスムーズになります!

💡 WordPressとは

WordPressは、世界中で最も使われているCMS(コンテンツ管理システム)です。
世界のウェブサイトの 約43% がWordPressで構築されており、
CMS全体では 63%以上のシェア を誇ります。

初心者でも簡単に操作でき、テーマやプラグインを追加することで
デザインや機能を自由に拡張できるのが最大の魅力です。

参考:https://blog-bootcamp.jp/start/wordpress-share/

🧱 MySQLとは

MySQLは、オープンソースのリレーショナルデータベース管理システム(RDBMS)です。
WordPressは投稿やユーザー情報など、すべてのデータをこのMySQLに保存します。

MySQLの特徴は次の通りです👇

特徴内容
信頼性世界中のWebアプリで利用される堅牢な設計
汎用性PHPやPythonなど主要言語と連携可能
高速性大量データ処理にも強い
拡張性ストレージエンジンやレプリケーション機能が豊富

MySQLはクライアント/サーバーモデルで動作し、
WordPress(クライアント)がMySQLサーバーに接続してデータをやり取りします。

⚙️ 作成するコンテナの構成

ここでは、以下の2つの公式イメージを使用します。

コンテナ名使用イメージ役割
wpdbmysql:8.0WordPressが利用するデータベース
wordpresswordpress:6.5Webアプリ本体(PHP+Apache)

両者をつなぐ設定は、Docker Composeのcompose.yaml ファイルで定義します。
WordPressコンテナがMySQLに接続するための環境変数を指定するのがポイントです。

🌍 WordPressの主な環境変数

環境変数説明
WORDPRESS_DB_HOST接続先データベースのホスト名(サービス名)
WORDPRESS_DB_NAME使用するデータベース名
WORDPRESS_DB_USER接続ユーザー名
WORDPRESS_DB_PASSWORD接続パスワード

これらの値は、MySQL側で設定した情報と完全に一致している必要があります。
 もしどれかが間違っていると、WordPressは起動時に「データベースに接続できません」と表示されます。

💾 MySQLの主な環境変数

環境変数説明
MYSQL_ROOT_PASSWORDrootユーザーのパスワード
MYSQL_DATABASE自動作成する初期データベース名
MYSQL_USER新規作成する一般ユーザー名
MYSQL_PASSWORD一般ユーザーのパスワード

これらの変数によって、MySQLの初期状態が構築されます。
WordPress側の環境変数と整合性を取ることで、接続がスムーズになります。

🧩 compose.yaml の定義

作業ディレクトリで VSCode を起動し、compose.yaml を以下のように作成します👇

services:
  wpdb:
    image: mysql:8.0
    container_name: mysql_container
    environment:
      MYSQL_ROOT_PASSWORD: root-pass
      MYSQL_DATABASE: database
      MYSQL_USER: wp-user
      MYSQL_PASSWORD: wp-pass
    volumes:
      - db-data:/var/lib/mysql

  wordpress:
    image: wordpress:6.5
    depends_on:
      - wpdb
    environment:
      WORDPRESS_DB_HOST: wpdb
      WORDPRESS_DB_NAME: database
      WORDPRESS_DB_USER: wp-user
      WORDPRESS_DB_PASSWORD: wp-pass
    ports:
      - "80:80"
    volumes:
      - ./wp:/var/www/html

volumes:
  db-data:

🔍 定義内容のポイント

要素内容
wpdbMySQLサービス(DBコンテナ)
wordpressWebアプリサービス(WordPress本体)
depends_onWordPress起動前にMySQLが起動するよう指定
volumesデータを永続化(ホストとコンテナをマウント)
portsホストの80番ポートをWordPressの80番へ転送

⚙️ ボリュームの仕組み

このComposeでは、2種類のボリュームを利用しています。

ボリューム名マウント先説明
db-data/var/lib/mysqlMySQLのデータ格納先(永続化)
./wp/var/www/htmlWordPressのファイルをホストと同期(テーマやプラグイン確認に便利)

この設定によって、MySQLのデータやWordPressのサイト構成が削除されずに残ります。

🧹 まずはクリーンアップ!

まず、作業環境をクリーンに整えましょう。
古いコンテナや不要なボリュームがあると挙動が不安定になることがあります。

以下のコマンドを実行します👇

docker system prune -a --volumes
オプション説明
-a使われていないすべてのイメージを削除します。
--volumes使われていないボリュームも削除します。

実行結果

PS C:\Users\joeac> docker system prune -a --volumes
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all anonymous volumes not used by at least one container
  - all images without at least one container associated to them
  - all build cache

Are you sure you want to continue? [y/N] y

📁 作業ディレクトリの作成

cd desktop/docker
mkdir wordpress4
cd wordpress4

実行結果

PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker> mkdir wordpress4

    Directory: C:\Users\joeac\Desktop\docker

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2025/10/22    23:15                wordpress4

PS C:\Users\joeac\Desktop\docker> cd wordpress4
PS C:\Users\joeac\Desktop\docker\wordpress4>

このように新しいディレクトリを作成してから compose.yaml を配置します。
VSCodeを起動する場合は次のように実行します👇

code compose.yaml

「compose.yaml」を上記の内容にして保存します。

🚀 コンテナの作成と実行

準備ができたら、以下のコマンドでコンテナを一括起動します👇

docker compose up -d
オプション説明
up定義ファイルに基づいてコンテナを起動
-dデタッチモード(バックグラウンドで実行)

このコマンドを実行すると、WordPressとMySQLのイメージがDocker Hubから自動ダウンロードされます。

実行結果

PS C:\Users\joeac\Desktop\docker\wordpress4> docker compose up -d
[+] Running 34/34
(省略)
[+] Running 4/4
 ✔ Network wordpress4_default        Created                                  0.1s
 ✔ Volume wordpress4_db-data         Created                                  0.0s
 ✔ Container mysql_container         Started                                  1.2s
 ✔ Container wordpress4-wordpress-1  St...                                    0.8s
PS C:\Users\joeac\Desktop\docker\wordpress4>

この表示が出れば、2つのコンテナが正常に起動しています。

Docker Desktopでのコンテナ確認

「Containers」タブを確認します。一覧にあるコンテナを展開します。

 MariaDBとWordPressの2つのコンテナが作成されて動作しているため、コンテナを示すアイコンが緑色になっています。

コンテナが、緑色になってない場合は、何らかの問題が発生しています。

「compose.yaml」の定義の間違いが疑わしいので、トラブルシューティングを行ってください。

🧱 コンテナの依存関係

compose.yaml の中で指定した depends_on によって、
WordPressコンテナはMySQL(wpdb)が起動してから立ち上がるように制御されます。

WordPressは起動時にデータベース接続を行うため、
この依存関係設定がないと「接続エラー」で失敗する場合があります。

依存関係は以下のように定義しています。

wordpress:
凵凵depends_on:
凵凵凵凵-wpdb

※「凵」は半角スペースを表しています。

🗂️ バインドマウントの確認

コンテナ起動後、wordpress4 ディレクトリを確認すると、
自動的に wp フォルダが作成されています。

この中には、WordPressの構成ファイル(wp-config.phpやindex.phpなど)が自動生成されています。
このバインドマウントのおかげで、VSCodeで直接WordPressテーマを編集できます。

🌐 WordPressにアクセスしてみよう

ブラウザを開いて次のURLを入力します👇

http://localhost

WordPressの初期セットアップ画面が表示されます!

ここで「日本語」を選び、「次へ」ボタンを押すとセットアップが進みます。

以降はWordPressの画面上でサイト名や管理者アカウントを設定するだけでOKです。

✅ まとめ

ステップコマンド内容
不要オブジェクト削除docker system prune -a古い環境をリセット
ディレクトリ作成mkdir wordpress4作業用フォルダを作成
編集code compose.yamlCompose定義を作成
起動docker compose up -dコンテナを起動
動作確認ブラウザで localhost にアクセスWordPressセットアップ画面を確認

💬 ひとことまとめ

 Docker Composeを使えば、WordPressとMySQLをわずか1つのファイルで簡単に連携できます。
開発環境でも本番でも、この構成を理解しておくと応用が効きますよ!