Dockerを使用すると、WordPressの開発環境を迅速にセットアップできます。今回は、DBにMySQL 8系を使用した環境を構築します。
[目次を開く]
1. Dockerを使うメリット
Dockerを使用してWordPress環境を構築することで、以下のようなメリットがあります。
- 環境の一貫性: 開発マシンに依存しないため、どこでも同じ環境を再現できます。
- セットアップが容易: 依存関係を一括で管理でき、手作業が減ります。
- 分離された環境: 他のプロジェクトと隔離された独立した開発環境が簡単に維持できます。
2. 必要なツール
- Docker Desktop(Windows、macOS、Linux向け)
- Docker Compose
これらのツールがインストールされていない場合は、以下の記事を参考にしてください。
3. Docker ComposeによるWordPressとMySQL 8環境の構築
3.1. プロジェクトの準備
まず、プロジェクト用のディレクトリを作成し、docker-compose.ymlというファイルを用意します。
mkdir wordpress-docker
cd wordpress-docker
touch docker-compose.yml
touch php.ini 3.2. docker-compose.ymlの作成
次に、docker-compose.ymlファイルを作成し、以下の内容を記述します。
version: '3.8'
services:
wordpress:
image: wordpress:latest # 適宜バージョンは指定してください
container_name: wordpress
ports:
- "8000:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress_password
WORDPRESS_DB_NAME: wordpress
volumes:
- ./wordpress:/var/www/html
- ./custom-php.ini:/usr/local/etc/php/php.ini #6.2で後述
depends_on:
- db
db:
image: mysql:8.0
container_name: db
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress_password
command: --default-authentication-plugin=mysql_native_password
volumes:
- ./data:/var/lib/mysql
volumes:
db_data:
3.3. docker-compose.ymlの説明
- wordpress: 最新のWordPress公式イメージを使用。WordPressはMySQLデータベースに接続する設定がされています。データベースホストは
db:3306(MySQL 8のコンテナ)を指定しています。 - db: MySQL 8.0イメージを使用。デフォルトの認証プラグインを
mysql_native_passwordに設定しています。これは、古いバージョンのMySQLと互換性を持たせるためです(これがないとWordPressが認証に失敗する場合があります)。 - volumes: データベースのデータやWordPressのコンテンツを永続化するためのボリュームを定義しています。
4. WordPress環境の起動
4.1. コンテナの起動
準備ができたら、Docker Composeを使って環境を起動します。
docker-compose up -d -
dオプションを使うと、コンテナがバックグラウンドで実行されます。
起動が完了したら、ブラウザでhttp://localhost:8000にアクセスしてWordPressの初期セットアップ画面を確認します。
4.2. コンテナの確認
docker ps このコマンドで、実行中のWordPressとMySQLコンテナが確認できます。
5. WordPressの初期設定
ブラウザでhttp://localhost:8000にアクセスすると、WordPressのセットアップ画面が表示されます。以下の手順でセットアップを完了します。
言語を選択
サイトのタイトル、ユーザー名、パスワード、メールアドレスを入力。
「WordPressをインストール」をクリック。
これで、WordPressが正常にインストールされ、管理画面にアクセスできるようになります。
Error establishing a database connectionと表示された場合はDBとの接続ができていないので、docker-compose.ymlをみなおしてみましょう。
またTOPページは表示されても記事などに飛べない場合は、パーマリンクの設定が反映されていない場合もあるので設定からパーマリンクの設定に飛び「変更を保存」ボタンのクリックも試してみてください。(設定を変更しなくてもOK)
6. 開発環境のカスタマイズ
Dockerでコンテナの起動に成功すると上記のようなディレクトリになっているのでwp-content内のファイルをVSCodeで編集することでWordPressをカスタマイズできます。
6.1. データの永続化
docker-compose.ymlでは、MySQLデータベースの永続化のためにボリュームdb_dataを定義しています。これにより、コンテナが停止・再起動してもデータは失われません。また、./wp-contentディレクトリにWordPressのコンテンツを保存しているため、テーマやプラグインの変更がローカルファイルに反映されます。
6.2. PHP設定のカスタマイズ
PHPの設定を変更する場合は、カスタムphp.iniファイルを作成してWordPressコンテナにマウントすることができます。
volumes:
- ./custom-php.ini:/usr/local/etc/php/php.ini これで、custom-php.iniファイルを使用してPHPの設定を変更できます。
#custom-php.ini
upload_max_filesize = 500M
post_max_size = 500M 「All-in-One WP Migration and Backup」でファイルをインポートする際に上記の設定を変更することがよくあります。
6.3 .htaccessの設定(必要な場合は)
バックアップファイルからWordPressのデータをインポートした場合は .htaccessがルートディレクトリに入ってたりするので、以下のように適宜、設定をしておきましょう。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
7. コンテナの停止と削除
開発が終了したら、以下のコマンドでコンテナを停止および削除できます。
7.1. コンテナの停止
docker-compose down 7.2. コンテナとボリュームの完全削除
すべてのデータを削除したい場合は、以下のコマンドでボリュームも含めて削除します。
docker-compose down --volume 8. まとめ
Dockerを使用してMySQL 8系を利用したWordPressの開発環境を簡単に構築できました。MySQL 8の持つ優れたパフォーマンスやセキュリティ機能を活かし、より強力なWordPress開発環境を手に入れることができます。Docker Composeを使うことで、設定が複雑になることなく、すぐにプロジェクトを始められるのも大きなメリットです。
ぜひ、DockerとMySQL 8を活用して、効率的でパフォーマンスの高いWordPress開発を進めてください。


