アルアカ - Arcadia Academia

Arcadia Academiaは「エンジニアリングを楽しむ」を合言葉に日本のデジタル競争力を高めることをミッションとするテックコミュニティです。

DockerでWordPressの開発環境を構築する方法(MySQL 8系対応)

Featured image of the post

Dockerを使用すると、WordPressの開発環境を迅速にセットアップできます。今回は、DBにMySQL 8系を使用した環境を構築します。


1. Dockerを使うメリット

Dockerを使用してWordPress環境を構築することで、以下のようなメリットがあります。

  • 環境の一貫性: 開発マシンに依存しないため、どこでも同じ環境を再現できます。
  • セットアップが容易: 依存関係を一括で管理でき、手作業が減ります。
  • 分離された環境: 他のプロジェクトと隔離された独立した開発環境が簡単に維持できます。

2. 必要なツール

  • Docker Desktop(Windows、macOS、Linux向け)
  • Docker Compose

これらのツールがインストールされていない場合は、以下の記事を参考にしてください。

📄Arrow icon of a page linkDockerインストール方法:OS別ガイド


3. Docker ComposeによるWordPressとMySQL 8環境の構築

3.1. プロジェクトの準備

まず、プロジェクト用のディレクトリを作成し、docker-compose.ymlというファイルを用意します。

mkdir wordpress-docker
cd wordpress-docker
touch docker-compose.yml
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
    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のセットアップ画面が表示されます。以下の手順でセットアップを完了します。

言語を選択

Image in a image block

サイトのタイトルユーザー名パスワードメールアドレスを入力。

Image in a image block

「WordPressをインストール」をクリック。

これで、WordPressが正常にインストールされ、管理画面にアクセスできるようになります。

Image in a image block

Error establishing a database connectionと表示された場合はDBとの接続ができていないので、docker-compose.ymlをみなおしてみましょう。

Image in a image block


6. 開発環境のカスタマイズ

Image in a image block

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開発を進めてください。

あなたを爆速で成長させるメンタリングプログラムはこちらから↓↓

RUNTEQ(ランテック) - 実践型Webエンジニア養成プログラミングスクールの入会