Dockerでwebサーバ立てて「アクセスできません」となったときに確認すること
Dockerを初めて触ったとき、よくChromeの「アクセスできません」的なエラーページ表示されますよね。
もちろん「Docker apache アクセスできません」とかで検索しても出てこず、どこから調査したらいいのかわからない、という方に向けて書いていきます。
webサーバーはapacheとして話を進めていきます。
コンテナが正常に構築されているか
つまり、コンテナが立ち上がっているかどうかの確認です。
「docker ps」とかやってもwebサーバーのコンテナが見えないときは正常にビルドされていません。
こういう場合、「docker ps -a」とオプションを足すことで、今までビルドして削除されていないコンテナの一覧を見ることができます。
「ビルドするコマンド打ったのに、コンテナが出てこない...」という方はまず「docker ps -a」でコンテナがあるか確認しましょう。
で、該当のコンテナが「exit」とかになっている場合はビルド中に何かしらのエラーが出て終了している場合が多いので「docker logs [コンテナID]」でログを確認します。
configファイルの設定が間違っているとか、ちゃんとログが出ているはずなのでそれを元に修正しましょう。
webサーバは動いているか
「コンテナはビルドされているけど動かない」という場合ですね。
この場合、まずコンテナに入りましょう。
dockerコマンドであれば「docker exec -it [コンテナID] bash」ですかね。
docker-composeであれば、docker-compose.ymlがあるディレクトリで「docker-composer exec [コンテナ名] bash」でいけます。
で、ちゃんとwebサーバーが動いているか確認したいので「service httpd status」(もしくはsystemctl status httpd)を打ちます。
ここで「stopped」とか出てたらログを確認しましょう。
configの設定によりますが、大体は「/var/logs/httpd/error.log」とかにあるはずです。
どうしても見つからないというときは「sudo find / -name error.log」とかで検索しましょう。
あとは、ログの内容を修正して終わりです。
apacheのconfigを修正した場合は「service httpd restart」しないと反映されないので忘れずに打ちましょう。