この記事では、Dockerを使用してローカル環境にWordPressを構築する方法について解説します。
実際に当サイトを開発・運営した経験をもとに書いています。

この記事を読むと:

  • 自由に触れるWordPress環境を構築できる
  • Dockerによる環境構築方法を理解できる

なぜDockerなのか?

Dockerを使用してローカル開発環境を作るメリットは「動作環境をコード化して、どのPCでも同じ状態を再現できる」という点にあります。

実務上は以下のようなメリットになります。

  • 本番環境に合わせた構成が簡単に作成できる
  • 環境差分(PC環境ごとに動作が違う)を無くす
  • 複数の構成が異なる環境を同時に起動できる

逆にデメリットはローカルで動かすためPCに負荷がかかる点です。
PCのスペックが低い、Docker側で重い作業を行う等でPCの動作が遅くなります。

前提条件・環境

今回の検証環境は以下です。

  • Docker Desktop
  • テキストエディタ(VSCodeなど)
  • Webブラウザ(Chromeなど)
  • コマンドプロンプト(macならターミナル)

Docker Desktopの導入方法は以下にて解説しておりますので、未導入の場合は是非参考にしてください。

ステップ1 Docker Desktopの起動

なにはともあれDocker Desktopを起動しましょう。起動すれば以下のような画面が表示されるはずです。

Docker Desktop:起動画面

また、Windowsなら以下のようにタスクバーにも表示されているはずです。

Docker Desktop:タスクバーの表示

ステップ2 Docker設定ファイルの作成

Dockerで環境を構築するためには docker-compose.yml という設定ファイルが必要になります。
このファイルにはコンテナ内に構築する環境の構成を記述し、それをもとにDockerが自動で環境を構築する仕組みになっています。

docker-compose.yml に記述する構成は本番環境と同様のものを指定しましょう。
本記事では複雑になりすぎないよう “ローカルにWordPress環境を作るための最小構成” で説明します。

作業用ディレクトの作成

まずは docker-compose.yml を置くフォルダを作成します。
場所やフォルダ名は何でもいいですが、WordPressのDBやテーマファイルもここに入るため作業しやすい場所がいいと思います。

今回は Cドライブ直下に test-site フォルダを作成することとしました。

docker-compose.yml ファイルの作成

テキストエディタを開き、以下の内容を記述したうえで docker-compose.yml というファイル名で保存し、作成した作業用ディレクトリに置きます。

services:
  db:
    image: mysql:8.4
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: wppass
      MYSQL_ROOT_PASSWORD: rootpass
    volumes:
      - db_data:/var/lib/mysql

  wordpress:
    image: wordpress:6.9.1-php8.2-apache
    restart: unless-stopped
    depends_on:
      - db
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: wppass
    volumes:
      - ./wp-content:/var/www/html/wp-content

volumes:
  db_data:

ひとつずつ解説します。

全体像

  • services: の下に「起動するコンテナ(サービス)」を並べる
    今回は db:wordpress: を起動しています。
  • volumes: でデータを永続化するための領域を定義
    これがなければコンテナを停止した時にデータが消えちゃうので必須の記述です。

DB

db:
    image: mysql:8.4
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: wppass
      MYSQL_ROOT_PASSWORD: rootpass
    volumes:
      - db_data:/var/lib/mysql
  • db という名前のサービスの設定内容を記述
  • image: mysql:8.4 MySQL 8.4 の公式イメージを指定する
  • restart: unless-stopped コンテナが落ちた時に自動で再起動する(手動で停止させた場合を除く)
  • environment:データベース名、ユーザー名とそのパスワード、rootユーザーのパスワードをそれぞれ指定する
  • volumes:MySQLのデータ保存場所を指定する

WordPress

  wordpress:
    image: wordpress:6.9.1-php8.2-apache
    restart: unless-stopped
    depends_on:
      - db
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: wppass
    volumes:
      - ./wp-content:/var/www/html/wp-content
  • wordpressという名前のサービスの設定内容を記述
  • image: wordpress:6.9.1-php8.2-apache WordPress 6.9.1 をPHP 8.2、WebサーバーはApacheを指定
  • restart: unless-stopped DBと同様に落ちたら自動復帰
  • depends_on: - db 先に記述したdbが起動した後にWordPressを起動するという指定
  • ports:- "8080:80" ブラウザを使用し http://localhost:8080 でページを閲覧するためのポート設定
  • environment:先に記述したDBをWordPressに使用させるための接続情報を指定
  • volumes: コンテナ内の wp-content を、PC上の ./wp-content フォルダにマウントさせる設定

長くなりましたが、ひとまずこれで最低限WordPressを動かすための準備ができました。

ステップ3 コンテナの起動

コマンドプロンプト(またはターミナル)を使用してコンテナを起動します。
まずはコマンドプロンプトを起動し、docker-compose.yml を格納した作業用フォルダに移動します。

そこで以下のコマンドを実行してください。

docker compose up -d

これは docker-compose.yml の内容をもとにコンテナを作成するものです。
実行するとコンテナの初回起動が行われます。以下のような表示が出るはずです。

コマンドプロンプト: コンテナ初回起動

また、Docker Desktopを見ると以下のように起動中のコンテナが確認できるようになっています。

Docker Desktop:コンテナ起動確認

ステップ4 WordPressにアクセス

起動したWordPressにアクセスしましょう。
http://localhost:8080 でアクセスできるよう設定していたので、Webブラウザを使用してこのURLにアクセスしてみてください。
まっさらなWordPressが入っているので、以下のような言語設定の画面から始まると思います。日本語を選択して次へ進んでください。

WordPress: 言語設定画面

サイトの基本情報を入力して、WordPressをインストールしてください。
ここで入力した内容は後ほどWordPressの管理画面から設定変更が可能なので、まだ決まって無ければとりあえずのものを入れておきましょう。

WordPress: 基本情報入力画面

インストールが完了したらログイン画面に遷移するため、先ほど設定したユーザー名・パスワードでログインしてください。
無事ログインできればWordPressのダッシュボードが表示されるはずです。

ステップ5 コンテナの停止と保存確認

コンテナを停止した際に情報が消えてしまわないか確認します。
コマンドプロンプトにて、作業用ディレクトリへ移動し以下のコマンドを実行します。

docker compose down

これで再度 http://localhost:8080 にアクセスしてみてください。停止できていればアクセスできなくなっているはずです。
そのまま以下のコマンドを実行し、コンテナを起動してみましょう。

docker compose up -d

初回起動ほど待たずに起動されたかと思います。http://localhost:8080 にアクセスしましょう。
コンテナ停止で情報が消えてなければ、初回起動時のような言語設定・基本情報設定は表示されません。
http://localhost:8080/wp-login.php にアクセスしてログインしてみましょう。ユーザー情報も残っているためログインできます。

ステップ6 テーマ読み込み確認

ステップ2 にて wp-content フォルダのマウント設定を行っているため、作業フォルダ内の wp-content 内にあるファイルを変更すればローカル環境にもその内容が反映されます。

WordPress 6.9.1 ではデフォルトで twentytwentyfive のテーマが読み込まれているので、このテーマを編集して反映されるか確認してみましょう。

触るファイルは何でもいいですが、今回はわかりやすいように wp-content/themes/twentytwentyfive/patternsheader.php を使用してみます。

テキストエディタで header.php を開き、末尾に好きな文字列を入れて保存してみてください。
以下のようにサイトのヘッダーに記述した文字列が出ていれば成功です。

TOP: テーマ修正の反映確認

これでDockerを使用したWordPressローカル環境を作成することができました。

既に本番サイトが存在する場合はローカル環境にテーマファイルをアップロードしたり、投稿のインポート・エクスポート機能を用いて本番同様の環境にしてしまいましょう。

まとめ

今回はDockerを使用したWordPress開発環境の作り方を解説していきました。

コンテナは複数作ってもOKなのでサイトごとにどんどんコンテナを作っていきましょう。
また、チームで開発を行っている場合は同じ docker-compose.yml を共有することで環境差分を減らせます。

本来は本番環境の構成に合わせて設定を行うため、細かな設定は以下のリファレンスで確認してみましょう。