bitnami-docker-wordpress-nginx で開発環境を構築

WordPressの開発環境をローカルに構築するにあたり、bitnami-docker-wordpress-nginxを使って環境構築をしていて、つまづいたのでメモ

WordPressを起動

  • bitnami-docker-wordpress-nginxのGithub
    • https://github.com/bitnami/bitnami-docker-wordpress-nginx
  • まずはWordpressを起動
    • README.mdに書いてある通りするだけでDockerでWordpressで問題なく起動するが、phpのファイルを編集すると、キャッシュが効いているせいか、なんどリロードしても反映しない。なんどか続けていると反映するのだが。

なんですぐに反映しないのかキャッシュの問題?

  • php-fpmの設定?
  • nginxの設定?
  • php.ini?

原因はphp.ini

  • コンテナ内にある/opt/bitnami/php/conf/php.iniを確認
    opcache.enable = 1 になっていて、デフォルトはみたいで有効です。この設定を変更して再起動するば、編集内容がすぐに反映した。本番では1でいいが開発環境では致命的

修正方法

# コンテナのphp.iniをローカルへコピー「bitnami_wordpress_1」はコンテナ名
$ docker cp bitnami_wordpress_1:/opt/bitnami/php/conf/php.ini .
; 変更がすぐ反映するよう 1 -> 0 へ変更
opcache.enable = 0
# wordpressのvolumesに以下を追加
- './php.ini:/opt/bitnami/php/conf/php.ini'
  • コンテナ再起動か作り直しでいける思う。

docker-compose.yml

version: '2'
services:
  mariadb:
    image: 'docker.io/bitnami/mariadb:10.3-debian-10'
    volumes:
      - './mariadb_data:/bitnami/mariadb:cached'
    environment:
      - MARIADB_USER=bn_wordpress
      - MARIADB_DATABASE=bitnami_wordpress
      - ALLOW_EMPTY_PASSWORD=yes
  wordpress:
    image: 'docker.io/bitnami/wordpress-nginx:5-debian-10'
    ports:
      - '80:8080'
      - '443:8443'
    volumes:
      - './wordpress_data:/bitnami/wordpress:cached'
      - './wordpress-server-block.conf:/opt/bitnami/nginx/conf/server_blocks/wordpress-server-block.conf:ro'
      - './php.ini:/opt/bitnami/php/conf/php.ini'
    depends_on:
      - mariadb
    environment:
      - MARIADB_HOST=mariadb
      - MARIADB_PORT_NUMBER=3306
      - WORDPRESS_DATABASE_USER=bn_wordpress
      - WORDPRESS_DATABASE_NAME=bitnami_wordpress
      - ALLOW_EMPTY_PASSWORD=yes