kusanagi-php dockerのバージョンを上げたらERROR: Connection disallowed

以前KUSANAGI Runs on Dockerを参考にDocker上にWordpress環境を作った。

管理画面を見たらPHPのバージョンが古いのでアップデートしろとの警告が出ていたので、Docker Hubで最新のイメージを確認。

primestrategy/kusanagi-php - Docker Hub

docker-compose.ymlのイメージをlatestに変更して、stop -> upで立ち上げ直した。

  kusanagi-php7:
    image: primestrategy/kusanagi-php:latest

これですんなり動くかなと思っていたが、ページにアクセスするとエラーで見れない。

docker-compose logs -fでログを確認してみたところ↓のエラーが発生していた。

ERROR: Connection disallowed: IP address 'xxx.xxx.xxx.xxx' has been dropped.

コンテナに入って/usr/local/etc/php-fpm.d/www.confを確認してみると↓が有効になっていたのでこれが原因と思われる。

listen.allowed_clients = 127.0.0.1

kusanagi-php/docker-entrypoint.shを確認すると、www.confは起動時に自動生成されるようになっており、allowed_clientsをコメントアウトすることはできずip指定をする必要があった。

幸い、環境変数での指定が許可されていたのでエラーログに出ていたipを追加して、stop -> upで再度立ち上げ直してみたところ、無事に起動できた。

  kusanagi-php7:
    image: primestrategy/kusanagi-php:latest
    environment:
      PHP_ALLOWED: xxx.xxx.xxx.xxx

追記

上記の方法だとコンテナのIPが変わったタイミングで再度エラーになってしまった。

listen.allowed_clientsは,区切りで複数指定ができるもののIP範囲を1個ずつ指定するのも大変なので、www.conf.templateを手元にコピーしてvolume mountを使って上書きすることにした。

# docker-compose.yml
    volumes:
      - ./www.conf.template:/usr/local/etc/php-fpm.d/www.conf.template

↓のようにlisten.allowed_clientsを消して、デフォルト(any)が使用されるようにする。

# before
;listen.allowed_clients = 127.0.0.1
listen.allowed_clients = $PHP_ALLOWED

# after
;listen.allowed_clients = 127.0.0.1

昔からある環境なのでwordpressのまま動かしているが、ゆくゆくは静的ページに置き換えてメンテコストを下げていきたい。