コンテナとFirewall
三日連続のdockerネタです。前回の「コンテナの自動起動」でサーバーを再起動した時にコンテナ(php-fpm)を自動起動するところまでたどり着いたので、通常運用へ移行するためファイアウォール(firewalld)を起動したところWordpressで「データベース接続確立エラー」が出てブログが表示されなくなりました。
dockerは仮想環境なのでホストOS内で稼働しているように見えて実際にはdocker配下の仮想ネットワーク上でコンテナが稼働しています。ファイアウォールを設定した時にはdockerの仮想ネットワーク環境は存在しなかったためコンテナが使う仮想インタフェースのことが考慮されていませんでした。急遽ファイアウォールのゾーンにコンテナの仮想ネットワークを追加して動作確認を行いました。仮想インターフェイスを追加したゾーンは「trusted」としました。信頼されるゾーンなので「ACCEPT」が基本です。このコンテナはそもそもphp-fpmのみを稼働させる目的のコンテナなので信頼しても大丈夫だと思っています。
$ sudo firewall-cmd --list-all --zone=trusted trusted (active) target: ACCEPT icmp-block-inversion: no interfaces: br-656d475e26cb sources: services: ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
まだdockerが仮想環境を利用しているって感覚が薄く最初は接続出来ない理由がわからず多少調べるのに時間がかかってしまいました。ローカルの環境では経験していたのでわかってはいたのですが本番環境はデータベース接続がそもそもリモートなので言語環境が仮想化されたってことを失念していました。次回の再起動時には忘れないように対処する必要があります。と言う事でメモを兼ねた記事でした。