ラズパイ+DockerでWordPressの環境構築

# Word Pressの環境を構築

## docker-compose.ymlのファイルを作成する

```shell-session:
$ vi docker-compose.yml
```

ここの記事を参考にしました。

https://raspida.com/rpi4-docker-worpress

```yml:docker-compose.yml
version: '3.8'

services:
  db:
    image: linuxserver/mariadb:latest
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: test_user
      MYSQL_PASSWORD: user_password

  wordpress:
    depends_on:
      - db
    image: arm32v7/wordpress:latest
    volumes:
      - html:/var/www/html
    ports:
      - "8080:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: test_user
      WORDPRESS_DB_PASSWORD: user_password

volumes:
  db_data:
  html:  
```

docker-compose.yml自体の説明は以下がわかりやすいです。

https://qiita.com/yuta-ushijima/items/d3d98177e1b28f736f04

## Dockerを起動

wordpressとmariadbのコンテナを一括で起動するので、``docker-compose up -d``を実行する。

```shell-session:
$ docker-compose up -d
Creating network "pi_default" with the default driver
Creating volume "pi_db_data" with default driver
Creating volume "pi_html" with default driver
Pulling db (linuxserver/mariadb:latest)...
latest: Pulling from linuxserver/mariadb
8e4d3a410415: Pull complete
0b8e3216ed49: Pull complete
f0d9239a426a: Pull complete
a7dbc35a3425: Pull complete
181f267e48ff: Pull complete
245cfb9749ea: Pull complete
0a6af3386e57: Pull complete
705eca2a4dbf: Pull complete
Digest: sha256:3d8d28744161dcc8bc7b583a65de92e05f8be1223a32d8714cf8bdea8965caf6
Status: Downloaded newer image for linuxserver/mariadb:latest
Pulling wordpress (arm32v7/wordpress:latest)...
latest: Pulling from arm32v7/wordpress
b6e5ca4da968: Pull complete
ee38362a3159: Pull complete
585c04fe561e: Pull complete
097d5ecc5406: Pull complete
567a3462d460: Pull complete
3e870e68d221: Pull complete
ae437a68bd98: Pull complete
346bb83bcd1a: Pull complete
fec5c18f0bce: Pull complete
4e254f3d73d8: Pull complete
005e965878be: Pull complete
b4ee84b57df1: Pull complete
965136d19ea8: Pull complete
660e2781b258: Pull complete
4bd297cf02c7: Pull complete
70024947d845: Pull complete
04e1794275a8: Pull complete
c0fc62ade7a2: Pull complete
b651cf80e99b: Pull complete
a451e88b6e24: Pull complete
bdfe7ef2584f: Pull complete
Digest: sha256:b3265bcf9d75c8c4a46ccc4f412eff67e5c1b00f8ec1858b5b4e00a6e998c3da
Status: Downloaded newer image for arm32v7/wordpress:latest
Creating pi_db_1 ... done
Creating pi_wordpress_1 ... done
```

## コンテナの確認

すでに起動しているので、``docker container ls``と``docker container ps``の内容は同じ。

```shell-session:
$ docker container ls
CONTAINER ID   IMAGE                        COMMAND                  CREATED        STATUS          PORTS                                       NAMES
5c6f73138a55   arm32v7/wordpress:latest     "docker-entrypoint.s…"   10 hours ago   Up 26 minutes   0.0.0.0:8080->80/tcp, :::8080->80/tcp       pi_wordpress_1
1706ca9ed5bd   linuxserver/mariadb:latest   "/init"                  10 hours ago   Up 10 hours     0.0.0.0:3306->3306/tcp, :::3306->3306/tcp   pi_db_1
$ docker container ps
CONTAINER ID   IMAGE                        COMMAND                  CREATED        STATUS          PORTS                                       NAMES
5c6f73138a55   arm32v7/wordpress:latest     "docker-entrypoint.s…"   10 hours ago   Up 27 minutes   0.0.0.0:8080->80/tcp, :::8080->80/tcp       pi_wordpress_1
1706ca9ed5bd   linuxserver/mariadb:latest   "/init"                  10 hours ago   Up 10 hours     0.0.0.0:3306->3306/tcp, :::3306->3306/tcp   pi_db_1
```

## WordPressにアクセスしてみる。

今回は、家のネットワークの中で、IPアドレス192.168.10.10のラズパイにインストールしたので、以下のURIでWordPressにアクセスしました。

``http://192.168.10.10:8080/wp-admin/install.php``

まず言語を聞かれたので日本を選択しました。

|![スクリーンショット 2021-11-20 20.52.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28184/470307a7-4ee0-92bc-f8cc-0712766b8e86.png)|
|:-:|

サイトのタイトルやユーザ名など諸々の初期設定をします。

|![スクリーンショット 2021-11-20 20.53.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28184/e4f2de5e-3e00-81c9-21a1-87054830ae6c.png)|
|:-:|

初期設定が完了すると、以下の画面が表示されます。

:![スクリーンショット 2021-11-20 20.53.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28184/6a38b0c1-e469-4768-54ff-2a206c98c316.png)|
|:-:|

ログイン画面に遷移して、ログインします。

|![スクリーンショット 2021-11-20 20.53.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28184/332737d5-5d2e-36e6-b051-dd6123759bb2.png)|
|:-:|


## テーマのアップロードでエラーになる

テーマをアップロードしようしたら、ファイルサイズが大きすぎてアップロードできないとエラーなったので、
コンテナの中に入ってphp.iniを確認してみる。

```shell-session:
$ docker-compose exec wordpress bash
root@5c6f73138a55:/var/www/html# cd /usr/local/etc/php
root@5c6f73138a55:/usr/local/etc/php# ls
conf.d  php.ini-development  php.ini-production
root@5c6f73138a55:/usr/local/etc/php# 
exit
```

php.iniがなく、開発用と製品用のphp.iniのテンプレートが用意されていたので、開発用の方を使ってみることにする。
コンテナ内ではviがないので、ホストの方へファイルをコピーして編集後、名前をphp.iniに変更してコンテナ内へ置きにいきます。

```shell-session:
$ docker container ls
CONTAINER ID   IMAGE                        COMMAND                  CREATED        STATUS       PORTS                                       NAMES
5c6f73138a55   arm32v7/wordpress:latest     "docker-entrypoint.s…"   10 hours ago   Up 9 hours   0.0.0.0:8080->80/tcp, :::8080->80/tcp       pi_wordpress_1
1706ca9ed5bd   linuxserver/mariadb:latest   "/init"                  10 hours ago   Up 9 hours   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp   pi_db_1
$ docker container cp 5c6f73138a55:/usr/local/etc/php/php.ini-development ~/.
$ cp php.ini-development php.ini
$ vi php.ini
$ docker container cp ~/php.ini 5c6f73138a55:/usr/local/etc/php/
```

php.iniの中身は、以下の値を変更しました。アップロードの最大サイズを2Mから10M、ポストの最大サイズを8Mから12Mに変更しました。

```ini:php.ini
(省略)
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 10M
(省略)
; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 12M
(省略)
```

書き換え後にコンテナの再起動をしました。

```shell-session:
$ docker restart 5c6f73138a55
5c6f73138a55
```

ちなみに、今回使ってみようとしたテーマは、これです。

https://thk.kanzae.net/wp/