Dockerを使ってWordPressのローカル開発環境を構築する

WordPressのローカル開発環境を作るのに、Dockerを使ったらさくっと構築できたので書いてみます
Docker最高！

## ツール検討
いろいろありました。初心者はLocalがおすすめらしいです。

- Local
    - 簡単にWordPressのローカル環境を構築できるツール
    - おすすめしているサイトが多い
- XAMPP（ザンプ）
    -  MariaDB、PHP、Perl を簡単にインストールできる Apache ディストリビューション
- MAMP
    - Apache HTTP Server、MySQL、PHPをまとめてインストールできるツール
- Docker
    - コンテナ仮想化を用いてアプリケーションを開発・配置・実行するためのプラットフォーム
    - Dockerコンテナ内でWordPress開発環境を簡単に構築できる

今回、新たなツールをインストールしたくないのと、仮想環境で管理したい、という思いがあったので
もともと私のマシンに入っているDocker Desktop for Windowsを選びました

## 環境構築手順
公式からチュートリアルが出ているので、チュートリアル通りに実施したらいけました。
チュートリアル通りだと少し不便そうだったので、一部修正して使っています。

### 前提
- OS: Windows 10
- Docker Desktop for Windows バージョン4.5.1

### プロジェクトの定義
- プロジェクト用ディレクトリを作成する
    - ディレクトリ名は任意
- プロジェクト用ディレクトリ内に、`docker-compose.yml` ファイルを作成する
    - 内容は公式のチュートリアル参照。執筆当時に公開されていた内容をコピペしたものが以下
    - [WordPressの推奨バージョン](https://ja.wordpress.org/about/requirements/)を満たしているかを一応確認する
```docker-compose.yml
version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:
```

### docker-compose.yml修正
このままでも環境構築は可能ですが、2点の問題があるため、docker-compose.ymlを修正しました

#### WordPressの資材をローカルに保存する
チュートリアルだとWordPressコンテナ内の/var/www/htmlにインストールされた資材を参照している
ローカルから資材を覗くことができない&コンテナを削除すると資材がすべて消えてしまう
そのため、WordPressの資材をローカルに保存するようにする
- プロジェクト用ディレクトリにWordPressの資材格納用ディレクトリを作成する
    - 今回はwordpressフォルダを作成した
- docker-compose.ymlファイルのwordpressに追記する
```
   wordpress:
     volumes:
       - ./wordpress:/var/www/html
```

#### DBに接続できるようにする
チュートリアル通りだとローカルからMySQLに接続することができない
そのため、DBに接続できるようにポート番号を指定する
- docker-compose.ymlファイルのdbに追記する
```
   db:
     ports:
       - "3306:3306"
```

全体はこんなかんじ。（+は修正で追記した部分）
```diff:docker-compose.yml
version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
+    ports:
+      - "3306:3306"
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
+    volumes:
+      - ./wordpress:/var/www/html
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:
```

### プロジェクト構築
準備ができたのであとはdockerこんぽうずの出番です。

- プロジェクト用ディレクトリ上で`docker-compose up -d`を実行する
    - 不足する Docker イメージがあれば取得される
    - WordPressとMySQLのコンテナが作成&起動される
```
PS ■■■■■■■■■ > docker-compose up -d
Creating network "web_default" with the default driver
Creating volume "web_db_data" with default driver
Pulling db (mysql:5.7)...
5.7: Pulling from library/mysql
c32ce6654453: Pull complete
415d08ee031a: Pull complete
(略)
Status: Downloaded newer image for mysql:5.7
Pulling wordpress (wordpress:latest)...
latest: Pulling from library/wordpress
214ca5fb9032: Pull complete
cd813a1b2cb8: Pull complete
(略)
Status: Downloaded newer image for wordpress:latest
Creating web_db_1 ... done
Creating web_wordpress_1 ... done
```

### WordPressの起動確認
- ブラウザを開き、`http://localhost:8000` にアクセス
- WordPressの画面が表示される
    - 画面表示に従って言語設定、ユーザ設定を行うと、WordPressの管理画面が表示される

## 参考文献
- ツール選定
    - https://localwp.com/
    - https://www.apachefriends.org/jp/index.html
    - https://www.mamp.info/en/windows/
- チュートリアル
    - https://docs.docker.jp/compose/wordpress.html
- WordPressの推奨バージョン確認
    - https://ja.wordpress.org/about/requirements/
- DockerでWordPress環境構築系の記事（大変参考になりました、ありがとうございました！）
    - https://zenn.dev/persona/articles/50f87da99c92af
    - https://qiita.com/herishiro/items/d59b30b331ef8d62be1b