docker-compose for wordpress と php.ini の設定

# はじめに

Mac local に Wordpress の動作環境を作る必要があったのでどの方法が良いか検討したところ、docker-compose でやるのが一番手っ取り早いと思った。

docker-compose.yml の sample が[docker のドキュメント](https://docs.docker.com/compose/wordpress/) に載っていたので、ほぼほぼそのまま使わせていただくことにした。

が、起動してみると、テーマのアップロードができなかった。原因を調べたところ、php.ini の設定項目追加が必要だった。次回以降のためにメモ。

# 作業ログ

## docker-compose.yml sample

まずは（ほぼほぼ）サンプルのまま起動してみる

```yaml
version: '3.3'

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

   wordpress:
     depends_on:
       - db
     image: wordpress:5.3.2-php7.2-apache
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
volumes:
    db_data: {}

```

docker-compose up して

```
$ docker-compose up -d
Creating network "wordpress_default" with the default driver
Creating volume "wordpress_db_data" with default driver
Creating wordpress_db_1 ... done
Creating wordpress_wordpress_1 ... done
```

ブラウザでアクセス

http://localhost:8000/

とりあえずログインまでは問題なし

![Screen Shot 2020-02-20 at 14.53.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145721/2e6fdd5f-ee61-c6c1-7f57-29cbc008ac64.png)

## テーマをアップロードしてみる

![Screen Shot 2020-02-20 at 14.55.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145721/4551c0be-651e-7036-7335-c4b67ba95265.png)

### The link you followed has expired.

が、エラー

![Screen Shot 2020-02-20 at 14.55.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145721/e640ffdb-80ae-37b2-9c0f-e2e04ec65319.png)

エラーメッセージは以下

* The link you followed has expired.
* 辿ったリンクは期限が切れています。

このエラーは php.ini に以下の設定を入れることで解消できた

設定の入った Docker image を使いたいので build する

## Dockerfile ①

```dockerfile
FROM wordpress:5.3.2-php7.2-apache

# set recommended PHP.ini settings
RUN { \
  echo 'max_execution_time=-1'; \
  echo 'memory_limit=-1'; \
  echo 'post_max_size=-1'; \
} > /usr/local/etc/php/conf.d/wp-recommended.ini
```

build

```
$ docker build -t my_wordpress:1 .
```

docker-compose.yml を修正して再トライ

```
$ docker-compose down && docker-compose up -d
```

どうかな？

残念ながらまたエラー

![Screen Shot 2020-02-20 at 15.36.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145721/867d063e-0c4f-9244-4f76-04bc559bfbd2.png)

### The uploaded file exceeds the upload_max_filesize directive in php.ini.

エラーメッセージは以下

* The uploaded file exceeds the upload_max_filesize directive in php.ini.
* アップロードしたファイルは php.ini で定義された upload_max_filesize を超過しています。

これはありがちなやつか

`upload_max_filesize` を追加

## Dockerfile ②

```dockerfile
FROM wordpress:5.3.2-php7.2-apache

# set recommended PHP.ini settings
RUN { \
  echo 'max_execution_time=-1'; \
  echo 'memory_limit=-1'; \
  echo 'post_max_size=-1'; \
  echo 'upload_max_filesize=100M'; \
} > /usr/local/etc/php/conf.d/wp-recommended.ini
```

build

```
$ docker build -t my_wordpress:2 .
```

今度はどうか

いけた！

![Screen Shot 2020-02-20 at 15.41.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145721/6ff4a02f-1046-0e0c-25c0-f52383248540.png)

おわり