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のまま動かしているが、ゆくゆくは静的ページに置き換えてメンテコストを下げていきたい。


Related #docker

Dockerのデータ保存場所を変更する

/etc/docker/daemon.jsonに追記

docker-composeで最新のログを確認する場合

tailオプションも合わせて指定しよう

docker-compose build時に「no Space Left on Device」が発生

1年前にも同じエラーにハマってた

Windows10 HomeにDockerを入れる

Windows 10 May 2020 UpdateでWSL2が導入されたおかげ