Docker中的Apache容器无法启动

此文是miriwo单人Advent日历2022的第21篇。

概述

    ApacheとPHPが入っているWebサーバーのDockerコンテナを起動しようとしたところApacheのエラーで起動できなかった。体験談をまとめる。

请注意。

    本記事はあくまで自分の環境でのトラブルシューティングです。さらに、後述するエラーのみののトラブルシューティングです。

错误内容

AH00558: httpd: 无法可靠地确定服务器的完全限定域名,将使用XXX.XXX.XXX.XXX。全局设置’ServerName’指令以抑制此消息。

错误经过

    開発しようと思って既に用意されていた$ make upコマンドを実行してMySQLとWebのコンテナを一回で起動しようとした。

错误

$ docker psで確認したところMySQLのコンテナしか起動していない。
Docker for DesktopでWebコンテナを見てみたら「エラー内容」で紹介したエラーが主力されていた。

解决问题的过程

Docker for DesktopからWebコンテナの起動を試みるが、一瞬起動するものの、同様のエラーを出力しコンテナが落ちる。

参考文献に記載されている各リンクの内容を試してみた。apacheのconfで既にServerName localhost:80は設定してあったが一旦コメントアウトしたりしたけど解決しない。

エラーは同じだがWeb上の知見と自分の事象が乖離している。

Dockerの設定と言ったらdocker-compose.yamlのイメージだったのでWebコンテナの設定を見てみる。

原因判明、Webサーバー用のポートフォワーディングの値が誤っていた。

下記の様に何故かコンテナ内の8099ポートをローカルの80にフォワーディングしていた。。

docker-compose.yaml
ports:
– “8099:80”

app.confではlocalhostを80ポートで提供するように設定していたので下記の様に修正した。

docker-compose.yaml
ports:
– “80:80”

問題は解消しWebコンテナは起動した。

教训

    • Dockerコンテナが起動しなかったらDocker for Desktopで当該コンテナのログを見よう。

 

    エラーコードを検索する時、エラーコードすべてで検索するのではなくかいつまんで調べよう。(今回なら「httpd: Could not reliably determine the server’s fully qualified domain name」とかhttpd:をapache2:にして検索してみるとか)

文献引用

 

bannerAds