

などの疑問や悩みを解決してまいります。
WordPressの開発環境の構築において、localやwp-envを使用したり様々な方法があります。
wp-envを使った開発環境の構築については以下の記事を参考にしてみてください。
-
-
【WordPress】wp-envを使ってローカル開発環境を構築する方法
続きを見る
今回は、Dockerを使用してWordPressの開発環境を簡単に構築する手順を解説します。
前提条件
WSL2下で開発環境を構築するために以下の前提条件が必要です。
- WSL2 が有効化されていること
- Ubuntu などのWSL2ディストリビューションがインストールされていること
- Dockerがインストールされていること
本記事の目次
完成例
最初に各ファイルの内容とディレクトリ構成を紹介します。

ディレクトリ構成
├── docker
│ ├── mysql
│ │ └── Dockerfile
│ └── wordpress
│ └── Dockerfile
├── docker-compose.yml
└── wordpress // WordPressのディレクトリが格納
docker-compose.yml
version: "3.7"
services:
mysql:
container_name: mysql_local
build:
context: ./docker/mysql
restart: always
ports:
- "3310:3306"
environment:
MYSQL_DATABASE: wordpress_db
MYSQL_ROOT_PASSWORD: password
MYSQL_USER: wordpress_db_user
MYSQL_PASSWORD: password
wordpress:
container_name: wordpress_local
build:
context: ./docker/wordpress
restart: always
depends_on:
- mysql
ports:
- 10081:80
environment:
WORDPRESS_DB_HOST: mysql_local:3306
WORDPRESS_DB_USER: wordpress_db_user
WORDPRESS_DB_PASSWORD: password
WORDPRESS_DB_NAME: wordpress_db
WORDPRESS_DEBUG: 1 # WordPressのデバッグモードを有効化
volumes:
- ./wordpress:/var/www/html
/docker/mysql/Dockerfile
FROM mysql:8.0 // ※バージョンは要件に合わせ変更してください
/docker/wordpress/Dockerfile
FROM wordpress:latest // ※バージョンは要件に合わせ変更してください
Docker起動
docker-compose up -d // docker-composeの起動
// 実行結果
Starting mysql_local ... done
Starting wordpress_local ... done
http://localhost:10081/ にアクセスしましょう。以下のように使用言語を選択する画面に遷移しますので「日本語」を選択してください。

次に必要情報を入力していきます。

設定後は以下の画面に遷移したら構築完了となります。

この後はログイン画面に遷移して、設定したログイン情報で管理画面にアクセスができるかどうか確認してください。
コード解説
それでは、開発環境構築に至るまでの手順について解説していきます。

ディレクトリの用意
まずは最初に説明したディレクトリ構成を作成します。
├── docker
│ ├── mysql
│ │ └── Dockerfile
│ └── wordpress
│ └── Dockerfile
├── docker-compose.yml
└── wordpress
docker-compose.ymlを作成
docker-compose.ymlを作成していきます。
docker-compose.ymlとは
Docker Compose を使用して複数のDockerコンテナを管理・構成するための設定ファイルです。主に複数のコンテナの定義、ネットワーク設定、ボリュームの設定、環境変数の管理などを記述します。
今回は以下のように記述しています。
version: "3.7" # Docker Composeのバージョン指定
services:
mysql: # MySQLサービスの定義
container_name: mysql_local # コンテナ名を "mysql_local" に指定
build:
context: ./docker/mysql # MySQLのDockerイメージをビルドするディレクトリの指定
restart: always # コンテナが停止しても自動的に再起動する
ports:
- "3310:3306" # ホストのポート3310をコンテナのMySQLポート3306にマッピング
environment:
MYSQL_DATABASE: wordpress_db # 作成するデータベース名
MYSQL_ROOT_PASSWORD: password # rootユーザーのパスワード
MYSQL_USER: wordpress_db_user # 新しく作成するMySQLユーザー
MYSQL_PASSWORD: password # 作成したMySQLユーザーのパスワード
wordpress: # WordPressサービスの定義
container_name: wordpress_local # コンテナ名を "wordpress_local" に指定
build:
context: ./docker/wordpress # WordPressのDockerイメージをビルドするディレクトリの指定
restart: always # コンテナが停止しても自動的に再起動する
depends_on:
- mysql # MySQLコンテナが起動してからこのコンテナを起動する
ports:
- "10081:80" # ホストのポート10081をコンテナのWebサーバーのポート80にマッピング
environment:
WORDPRESS_DB_HOST: mysql_local:3306 # WordPressが接続するMySQLのホスト名とポート
WORDPRESS_DB_USER: wordpress_db_user # MySQLのユーザー名
WORDPRESS_DB_PASSWORD: password # MySQLのパスワード
WORDPRESS_DB_NAME: wordpress_db # 使用するデータベース名
WORDPRESS_DEBUG: 1 # WordPressのデバッグモードを有効化
volumes:
- ./wordpress:/var/www/html # ホストの "wordpress" ディレクトリをコンテナ内の "/var/www/html" にマウント
version
まずversion
オプションでDocker Composeのバージョンを指定します。(今回は3.7を指定)
services
次に作成するコンテナを指定し、その内容を記述していきます。今回はMySQLとWordPressのコンテナを作成するので、services
の中にそれぞれmysql
とwordpress
のコンテナを定義しています。
container_name
container_name
オプションは、作成したコンテナに名前を指定することができます。今回はmysqlコンテナにはmysql_local
、wordpressコンテナにはwordpress_local
という名前を指定しています。
build.context
build.context
には、そのコンテナのベースとなるイメージや設定が記述してあるDockerfileを指定します。image: mysql:8.0
のように直接イメージを記述する方法もありますが、今回はdockerディレクトリを別途用意し、そこに各コンテナのイメージを記述したDockerfileを格納する形にしています。
restart
restart
オプションは、Dockerが停止した後の再起動ポリシーを設定します。always
と指定するとDocker デーモンが再起動時にもコンテナを自動で再起動するようになります。(デフォルトでは、no
の指定になっているため自動再起動されません。)
ports
ports
オプションでは、Dockerコンテナのポートとホストのポートの紐づけを行います。今回は、ホスト側で3310番ポートにアクセスすると、コンテナ内の3306番ポート(MySQLデフォルト)に転送され、ホスト側で10081番ポートにアクセスするとコンテナ内の80番ポートに転送されるように設定しています。
depends_on
depends_on
オプションを定義されているサービスは、depends_on
オプションに指定したサービスが定義されているサービスよりも先に起動することを保証します。今回であれば、wordpressサービスはmysqlサービスで定義しているデータベースを参照し利用するため、wordpressサービスよりも先にmysqlサービスが起動されるように起動順序の指定を行っています。
environment
environment
オプションは、コンテナ内で環境変数を設定することができます。今回でいうとMySQLでは、データベース名、ユーザー名、パスワードなどの初期設定を行い、WordPressでは、MySQLサーバーとの接続設定(ホスト名、ユーザー名、パスワード、データベース名)を行っています。
volumes
volumes
オプションは、コンテナとホスト間でファイルやディレクトリを共有するために使用されます。これにより、コンテナ内で変更された内容がホストにも反映されます。逆も同様です。そのため開発中のコードやデータベースファイル、設定ファイルなどをコンテナ内と外で簡単に共有することができます。
ここまでがdocker-compose.ymlに記載されている内容の説明です。
Dockerfileを作成
次にDockerfileを作成します。
Dockerfileとは
Dockerイメージを作成するための設定ファイルです。ベースとなる アプリケーションのインストール、環境変数の設定、実行するコマンド などを定義します。
今回必要なDockerfileは、mysqlコンテナとwordpressコンテナの2つです。
docker/mysql/Dockerfileの内容は以下になります。
FROM mysql:8.0
FROM
は、ベースとなるイメージを指定するための命令です。mysqlコンテナのMySQLのバージョンを8.0をコンテナイメージとするためこのような記述をしています。
docker/wordpress/Dockerfileの内容は以下になります。
FROM wordpress:latest
wordpressコンテナのイメージはWordPressの最新バージョンを指定しています。

RUN
や環境変数を設定するENV
などの命令文が存在します。まとめ
ここまで読んでいただきありがとうございました。
今回はDockerを利用してWordPressの開発環境構築を行いました。
冒頭でも説明したように、サーバーを立ち上げただけなので開発環境として内容は不十分かと思いますが、「とりあえずサーバーを立ち上げたい」という方へぜひ参考にしていただけたらと思います。
もちろんより開発環境を充実させることは当然可能なので、ぜひプロジェクトに合わせたWordPress開発環境を整えてみてください!