このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Docker超入門:ホストと同期するWordPress開発環境を作ろう!バインドマウント構築手順①

ホストと同期するWordPress開発環境を作ろう!バインドマウント構築手順①
Docker Composeを使えば、WordPressとMariaDBを組み合わせた開発環境を簡単に構築できます。
これまでに紹介した「Docker ComposeでWordPress+MariaDBコンテナを構築する方法①・②」では、ボリューム機能を使ってデータを永続化しました。

今回は、よりホスト側のファイルとリアルタイムに同期できる「バインドマウント」機能を使って、WordPress開発環境を構築していきます。
「ホストと同期するWordPress開発環境を作ろう!バインドマウント構築手順」は次の2部に分けて解説していきます。
バインドマウントとは?
バインドマウント(Bind Mount)とは、ホストOS上の特定のフォルダをコンテナ内のディレクトリに直接マウントし、両者の内容を同期させる仕組みです。
たとえば、ホストの「./html」ディレクトリをコンテナの「/var/www/html」にマウントすると、
ホスト上で編集したWordPressテーマやPHPコードが、すぐにコンテナ内に反映されます。

バインドマウントの特徴
| 項目 | 内容 |
|---|---|
| 同期対象 | ホスト側の任意ディレクトリとコンテナ内ディレクトリを同期 |
| 編集の反映 | ホストでの変更がリアルタイムにコンテナに反映 |
| 利用例 | ローカルでテーマ開発やプラグイン開発を行う際に便利 |
| 注意点 | ホスト側で削除したファイルはコンテナ内でも削除される。 |
ボリュームとバインドマウントの違い
データを永続化する方法には、「ボリューム」と「バインドマウント」の2種類があります。
どちらもデータを保持するという点では同じですが、性質が大きく異なります。
| 比較項目 | ボリューム機能 | バインドマウント機能 |
|---|---|---|
| 管理者 | Dockerエンジンが自動で管理 | ユーザーがホストのパスを指定 |
| 保存場所 | Docker専用領域(例:/var/lib/docker/volumes) | ホスト上の任意ディレクトリ |
| 使い勝手 | データの扱いはDockerに任せる。 | ホストのファイルを直接編集可能 |
| 利用シーン | 本番環境や永続的データ管理 | ローカル開発・テーマ開発 |
👉 開発中に「ホスト上でコードを書き換えて、すぐにブラウザで確認したい」という場合は、バインドマウントが最適です。

開発環境の構成イメージ
下図のように、ホストOS上の htmlディレクトリ と WordPressコンテナ内の /var/www/html を同期します。
MariaDB はボリュームで永続化し、WordPress はホストフォルダを直接マウントしてリアルタイム編集を可能にします。


WordPressとMariaDBの環境変数
まず、使用する環境変数を整理しておきましょう。
WordPressの主な環境変数
| 環境変数 | 説明 |
|---|---|
| WORDPRESS_DB_HOST | 接続するデータベースサービス名(例:wpdb) |
| WORDPRESS_DB_NAME | 使用するデータベース名 |
| WORDPRESS_DB_USER | データベース接続ユーザー名 |
| WORDPRESS_DB_PASSWORD | 接続ユーザーのパスワード |
これらはWordPressがDBにアクセスするために必要な設定です。
MariaDBの主な環境変数
| 環境変数 | 説明 |
|---|---|
| MARIADB_ROOT_PASSWORD | ルートユーザーのパスワード |
| MARIADB_DATABASE | 初期作成されるデータベース名 |
| MARIADB_USER | 作成されるユーザー名 |
| MARIADB_PASSWORD | 上記ユーザーのパスワード |
これらを正しく設定しておくことで、WordPressとMariaDB間の通信がスムーズに行えます。
compose.yaml の定義
WordPress+MariaDBの構成を「compose.yaml」で定義します。
ボリュームを使っていた部分をバインドマウントに置き換えます。
services:
wpdb:
image: mariadb:10.8
environment:
MARIADB_ROOT_PASSWORD: root-pass
MARIADB_DATABASE: database
MARIADB_USER: wp-user
MARIADB_PASSWORD: wp-pass
volumes:
- db-data:/var/lib/mysql
wordpress:
image: wordpress:6.8
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:
- ./html:/var/www/html #ボリューム名ではなくディレクトリ名にする。
volumes:
db-data: #WordPress用のボリュームは用意しない。
定義のポイント
| 項目 | 説明 |
|---|---|
| ./html:/var/www/html | ホスト上のhtmlフォルダをWordPressコンテナにバインドマウント |
| db-data:/var/lib/mysql | MariaDBのデータをボリュームで永続化 |
| depends_on: wpdb | WordPressがMariaDBに依存して起動する設定 |
| ports: "80:80" | ホストのポート80をWordPressコンテナの80にマッピング |
バインドマウントの行では、ボリューム名ではなくホスト側ディレクトリを直接指定している点がポイントです。
バインドマウントの書式
Docker Composeでバインドマウントを定義する書式は以下の通りです。
services:
サービス名:
volumes:
- ホストのディレクトリ:コンテナ内のパス例
volumes:
- ./html:/var/www/htmlホストのhtmlディレクトリが存在しない場合は、自動的に作成されます。
ただし、ホスト側のアクセス権が適切でないとコンテナが正常にファイルを読み書きできないため、必要に応じて権限を調整しましょう。
依存関係の定義
今回も、WordPressはMariaDBに依存しています。
そのため、次のようにdepends_onで依存関係を定義します。
wordpress:
depends_on:
- wpdb この設定により、MariaDB(wpdb)コンテナが起動してからWordPressコンテナが起動します。
WordPressはデータベースなしでは動作しないため、この依存関係が必須です。
まとめ
- WordPressとMariaDBの2つのコンテナをDocker Composeで管理。
- MariaDB はボリュームでデータを永続化。
- WordPress はホストの htmlディレクトリ と同期(バインドマウント)。
- ホスト側でファイルを編集すると、コンテナ内にリアルタイム反映!

次の「ホストと同期するWordPress開発環境を作ろう!バインドマウント構築手順➁」では、実際にこのcompose.yamlを使ってWordPressコンテナを構築し、ホストとの同期動作を確認していきます。
