kusanagi-php dockerのバージョンを上げたらERROR: Connection disallowed
以前KUSANAGI Runs on Dockerを参考にDocker上にWordpress環境を作った。
管理画面を見たら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のまま動かしているが、ゆくゆくは静的ページに置き換えてメンテコストを下げていきたい。