WordPressで何かしらのカスタマイズを行いたいとき構築してあるレンタルサーバなどにあるプロダクション環境のファイルを直接いじるより、手元にあるPCでWordPressが動くローカル環境を構築したり、本番環境とは違う環境にあるサーバ上にWordPressをセットアップしたりして、その環境内でファイルを変更したりチェックしたりしてできたものをプロダクション環境にアップロードすることがほとんどです。SAMURAI PROJECTでもローカル環境でWordPressが動く環境を構築し、変更したファイルをプロダクション環境へアップロードしています。今回はWordPressのDocker環境の構築方法を紹介します。

まず、ローカル環境の構築なんですが、様々な方法があります。

  • XAMPPやMAMPといったサーバ環境をインストールしそこにWordPressを構築する方法
  • Vagrant(VirtualBox)などの仮想化ソフト上にWordPressを構築する方法
  • Dockerを使ってWordPressを構築する方法

これ以外にも方法はあるかもしれないですが、ほぼ上記3つが主だったりするでしょう。SAMURAI PROJECTの場合は三番目のDockerを使ってWordPressを構築しています。なぜDockerを使っているかといいますと、XAMPPやMAMPはPCにインストールして手元の環境が汚れるのがいやなのと、Vagrantを使う場合は、Virtual PCがあまり好きな環境ではなくそれ以外の仮想化ソフトは有料なのでちょっと手が出ないからです。Dockerの場合だとDockerをインストールするのはありますが、簡単に環境を捨てれるのに加えてDocker公式なり提供元公式なりのDockerイメージが豊富で構築するのが簡単にできてしまうのが魅力です。

手順をおってDockerのインストールからローカルでのWordPress環境の構築を紹介します。このページでは、Docker Desktopのインストールから簡単な用語の説明とWordPress環境のファイルの作成まで説明します。私の環境がMacなのでMacでの使い方になります。Windows環境については細かいところは変わると思いますが、概ね一緒だと思います。

Docker Desktopをインストールする

簡単にDockerについて説明します。DockerもVirtualBoxなどと大きなカテゴリーで言えば一緒の仮想化ソフトウェアです。では何が違うのかというとOSレベルで仮想化するVirualBoxなどの従来型の仮想化ソフトウェアとは違い、OSレベルでは共通のカーネルを使いその上のレイヤーで仮想化するのがDockerになります。もっと知りたいかたはいろいろと調べると勉強になると思います。

DockerのホームページにてDocker Desktopをインストールします。ダウンロードしてインストールするだけなのでそこまで難しいことはないです。ただ昨年出たM1チップを搭載したMacはちゃんと動かない可能性があるので注意が必要です。

インストールが完了しDocker Desktopを起動できれば完了です。

Dockerにはいろんな周辺ソフトウェアがあり、Docker単体では使いにくい部分を解消できます。

Dockerでよく聞く用語の説明

Dockerではいろいろと専門用語があるのでWordPressの環境を構築するにあたって必要な用語のみ説明します。以下のテーブルは、この記事にでてくる用語を簡単に説明したものになります。

用語説明
Dockerイメージ, イメージDockerコンテナを立ち上げるためのパッケージ
Dockerコンテナ, コンテナDockerイメージから起動されたもの
ボリューム, volumeDockerコンテナ内のデータを永続化するためのオプション。
コンテナ内だけではなくDockerをホストしているPCからも共有できる。
dockerコマンドdockerコンテナを起動・削除するときなどのDockerを使う上で一番重要なコマンド
docker-compose複数のdockerコンテナを立ち上げるのに便利なツール
docker-compose.ymldocker-composeを使うのに必要なdockerコンテナの設定ファイル。
このファイルがないとdocker-composeコマンドは実行できない。

WordPress環境用のファイルを作成

Docker Desktopの起動が完了すれば、WordPress環境のファイルを作成します。まずは適当にフォルダを作りそのフォルダの中で以下のファイルを docker-compose.yml と言うファイル名で作成してください。

docker-compose.yml
version: '3.9'
services:
  wp:
    container_name: wp
    image: wordpress:php7.4
    restart: always
    working_dir: /var/www/html
    ports:
      - '8080:80'
    depends_on:
      - db
    volumes:
      - wpData:/var/www/html
    environment:
      TZ: 'Asia/Tokyo'
      WORDPRESS_DB_HOST: 'db:3306'
      WORDPRESS_DB_USER: 'wordpress'
      WORDPRESS_DB_PASSWORD: 'wordpress'
      WORDPRESS_DB_NAME: 'wordpress_db'
      WORDPRESS_DEBUG: 1
  db:
    container_name: db
    image: mysql:8
    command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
    volumes:
      - dbData:/var/lib/mysql
    ports:
      - '3306:3306'
    environment:
      MYSQL_DATABASE: 'wordpress_db'
      MYSQL_ROOT_PASSWORD: 'wordpress'
      MYSQL_USER: 'wordpress'
      MYSQL_PASSWORD: 'wordpress'

volumes:
  dbData:
    driver: local
  wpData:
    driver: local

ファイル内のコードの説明ですが、wpというWordPress最新版でPHP7.4のイメージのコンテナとdbというMySQL 8のイメージのコンテナを立ち上げるような記述をしています。どちらもDockerにある公式イメージです。

軽くどんなことになっているか説明します。わからない場合は飛ばしてください。

wp、dbそれぞれにvolumesでDockerが立ち上がっているPCとファイルを共有して永続化する設定をしているのでコンテナを削除して立ち上げてもデータが残っています。environmentでWordPressとMySQLの接続情報を書いているのとwpのdepends_onでwpとdbの依存関係ができているのでコンテナを立ち上がったときにすぐに接続します。簡単な文字になっていますが、ホストPCが外部へ開放されてないかぎりコンテナを立ち上げて他からハッキングされるようなことはないので簡単な文字にしています。

まとめ

ここまでDockerの簡単な解説からDockerを使ったWordPressの環境構築をするためのdocker-compose.ymlの作成まで行いました。次の記事で作成したファイルを使ってDockerコンテナを立ち上げる方法を紹介します。