前書き
多分 Apache
+ PHP-FPM
環境を一つのコンテナに入れるのがかっこよくない気はするのだが、
実際に動いているスクリプトは、
「MVCなんて知るか。PHPは PHP: Hypertext Preprocessor だろ」
と言わんばかりに、ロジックと出力HTMLの入り混じったソースコードなので、
そういうスクリプトが現状動いているサーバーの環境を再現した方が早いなと思った次第で
効率的に安全な Dockerfile を作るにはをみながらやり始めました。
つまづき1: /run/apache2 ディレクトリを手動で作る力技
tl; dr
apk add --no-cache apache2
で、全部よろしくやれてると思ったのですが、 httpd -D FOREGROUND
と実行しても、すぐ終了してしまう。
そこでコンテナ内の /var/log/apache2/error.log
の中身を眺めたら、こんなログが。
[Thu Mar 29 07:25:47.233959 2018] [core:error] [pid 54] (2)No such file or directory: AH00099: could not create /run/apache2/httpd.pid
[Thu Mar 29 07:25:47.233971 2018] [core:error] [pid 54] AH00100: httpd: could not log pid to file /run/apache2/httpd.pid
試しに ls /run/apache2
で確かめると、ディレクトリが存在しない。
ということで、 mkdir /run/apache2
を実行。
そして無事Apache2は立ち上がりました。
これを Dockerfile
にもちゃんと追記してビルドしたイメージを実行したところ、ビルドしたイメージでもApache2の動作を確認できました。
まとめ
- ログ見るのはやっぱり基本
もしかしたら追記するかもしれません