docker-composeを使ってWordPress環境を作成してみる

### 概要
WordPressを始めるにはレンタルサーバーなどなにかと初期費用が、本当に上手くいくのか謎なところがありますね。
どんなデザインにしたら良いのかなど予め試すための実験環境があればとても便利です。
ということで実験環境をdockerで作りましょう。

--- 

#### dockerを使う利点

- 作り直しが容易
- 環境の容易がインストールに比べて楽

#### word-pressの利点

- デザインが優れている
  - 見栄えの良さというよりもUIデザイン的なデザインです。どこにどんなボタンを置いてどんな項目を出せば使いやすいかなど、word-pressは細かく設定することができます。

#### 今回のゴール

- 公式のword-press dockerを入れる
- オススメのデザインを適用する
- markdown用のプラグインを入れる

---

### 事前の準備
以下を行っておく。

- dockerのインストール
- docker-composeのインストール

---

### 実作業1：WordPressのdocker環境を構築

- docker-composeを使ってwordpressに必要なwebとdbの環境をインストールします。WordPress用のディレクトリを作成してください。

```
mkdir word_press
cd word_press
```

- いよいよ本番作業です。

```
version: '3.3'
 
services:
   wordpress:
     image: wordpress:latest
     depends_on:
       - db
     ports:
       - "18080:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
     volumes:
       - ./html:/var/www/html
 
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: root
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
       
volumes:
    db_data:
```

portsという項目でホームディレクトリ上のポートをdockerコンテナのどのポートに割り当てるかという設定をしています。今回は18080ポートをWordPressコンテナの80番ポート（Webなどで使われるポート）に割り当てています。  
WordPressの運用に必要な最低限おコンソールでの操作はこれで終わりです。。なんだこれおい！  
以下のコマンドで環境を構築できます。

```
docker-compose up -d
```

--- 


### Webページからの設定

言語などの設定を行います。以下のようなURLをブラウザに打ち込みます。

```
localhost:18080 または<IPアドレス>:18080
```
すると言語選択画面が現れるので日本語を選択し、あとは画面に従ってユーザー設定を進めます。

--- 

### テーマを設定する。
Webページをみやすく、そして使いやすくする上で欠かせない作業です。
今回は無料で評判の高いCocoonをインストールします。

- アップロードできる容量を上げておく。
docker環境構築後の環境では２、３mbまでのファイルしかアップロードできないため、後の手順でテーマをアップロードしようとしたときにエラーが出ます。なので先に対策をしておきます。
以下のサイトを参考にしてphp.iniを作成し、ホームディレクトリにアップロードします。

  - https://www.magical-remix.co.jp/magicalog/archives/2857
今回はホームディレクトリは「/var/www/html」なので以下のような以下のコマンドでdocker環境にアップロードします。

```
#環境のphp.iniをdocker環境にアップする
docker cp ./php.ini  wordpress_wordpress_1:/var/www/html/php.ini
#dockerを再起動する
docker-compose restart
```
ただ、今回の手順では＜作業ディレクトリ＞/htmlにホームデクレクトリをマウントしているので、作成したphp.iniをディレクトリにほ込めば問題ないです。  
ただしdockerの再起動は必要です。

- テーマのインストールを行う。
  - 下記のCocoonの公式サイトを参照してください。
    - https://wp-cocoon.com/downloads/

--- 

### プラグインを入れる
今回は以下のサイトにあるプラグインを入れました。  
マークダウン記述用のプラグインも含まれています。自分の運用に合わせて好みのものを入れてください。
https://mahimahironron.hateblo.jp/entry/2019/10/29/WordPress%E3%81%AB%E5%85%A5%E3%82%8C%E3%82%8B%E3%81%B9%E3%81%8D%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B35%E9%81%B8

---

### ★復元できないと思ったら

トラブルなどがあってコンテナを1から作り直したい場合、以下のコマンドで永続化したDBボリュームごと削除できる。

```
docker-compose down --volumes
```

しかしこの後、docker-compse up -d で環境を作り直して入ろうとしたら前の環境情報が残留しているように見えた。DBボリュームも削除しているのに。。  
  
原因はなんと__キャッシュの残留__であった。  
  
以下はクロームでの対処法だがググれば出てくるのでdockerコンテナを作り直した場合、ブラウザキャッシュには注意しよう!

- https://support.google.com/accounts/answer/32050?co=GENIE.Platform%3DDesktop&hl=ja

### 参考にしたサイト
- http://bashalog.c-brains.jp/19/08/15-120000.php
- http://do-wp.com/plugins-after-installing-wordpress/¥
- https://codeaid.jp/blog/docker-wp/
- https://noumenon-th.net/programming/2019/04/05/docker-wordpress/