DockerでWordPressを簡単に立ち上げる方法

Docker Compose を使って、WordPress + MySQL を立ち上げる方法です。今日はWordPressのテーマを作ろうと思って、久しぶりにWordPressをセットアップしようとしたのですが、すっかり手順を忘れていまして、調べたところ、Dockerを使うととても簡単にセットアップができることが分かったので手順を残しておきます。

環境

  • macOS Mojave
  • Docker Desktop Version 2.0.0.0
  • WordPressコンテナ: wordpress:latest
  • MySQLコンテナ: mysql:latest

手順

任意のディレクトリに docker-compose.yml .env を下記の内容で作成します。

docker-compose.ymlファイルには、WordPressコンテナとMySQLコンテナを定義します。

version: '3'
services:
  wordpress:
    image: wordpress:latest
    ports:
      - "3001:80"
    env_file: .env
  mysql:
    image: mysql:latest
    command: --default-authentication-plugin=mysql_native_password
    env_file: .env

※ 上記の mysqlのcommandについて: MySQL8から新しい認証方式に変わったため、旧来のログイン認証が行えません。ここでは旧来の認証方式に戻すオプションを設定しています。

.envファイルには、間違ってGitに上げると危険なアカウント情報などを定義します。

WORDPRESS_DB_NAME=wordpress_database
WORDPRESS_DB_USER=wordpress_user
WORDPRESS_DB_PASSWORD=wordpress_password

MYSQL_ROOT_PASSWORD=root_password
MYSQL_DATABASE=wordpress_database
MYSQL_USER=wordpress_user
MYSQL_PASSWORD=wordpress_password

上記のディレクトリで コンテナを起動します。

$ docker-compose up

これでWordPressを使う準備ができました。

http://localhost:3001/ にアクセスすると、WordPressが使えます

補足

テーマやプラグインの開発をしたいときに、ホスト側(mac)のフォルダで作業をしたい場合があるかと思います。その場合は、volumesを使って共有フォルダを設定します。

例) ホスト側(mac)の ./themes/my-theme ディレクトリを、 ゲストの /var/www/html/wp-content/themes/my-theme ディレクトリにマウントする場合は次のようになります。

docker-compose.ymlファイル

version: '3'
services:
  wordpress:
    image: wordpress:latest
    ports:
      - "3001:80"
    volumes:
      - ./themes/my-theme:/var/www/html/wp-content/themes/my-theme
    env_file: .env
  mysql:
    image: mysql:latest
    command: --default-authentication-plugin=mysql_native_password
    env_file: .env

DockerはWordPressのテーマやプラグインの開発にはとても便利です。

参考サイト

https://www.pressmantech.com/tech/4873