PHPが動かない
podmanでWebサーバー用のコンテナを作ろうとしていたのだが、なんかだれが作ったのかよくわからないコンテナを使うのが気が引けたし、OSを何を使っているのかもよくわからないんですよね。
ということで、CentOS8のコンテナにapacheとphpを入れてwebサーバーを構築しようとしていたのだが、どうもうまくいかない。
起動方法はこんな感じです。testっていう名前でイメージを作って起動しています。
# podman run -it --rm -p 8080:80 test /sbin/init
問題は、静的なHTMLは大丈夫なんだけど、PHPがなぜか
Service Unavailable
になってしまう。
HTTPDのエラーログを見てみたら
Permission denied: AH02454: FCGI: attempt to connect to Unix domain socket /var/opt/remi/php74/run/php-fpm/www.sock (*) failed
ふむ。パーミッションエラーとな?
ということで、このエラーについてネットを結構調べてみたんだけど、全然情報が見つからず。
少数ながら同じことをしている人がいたので、その人のDockerファイルを使ってビルドしてみたけどやっぱりだめ。
原因は・・。
万策尽きたなと思ったところで、ふと、root権限でコンテナ動かしたらどうなるんだろう?
と思ってやってみたらすんなり動きました。(ヲイ
いやいや、podmanってルートレスじゃないのか?
他の人が作ったapache+phpのイメージはuser権限で動いていたので盲点でした。(まぁOSは何使ってるか知らないけど)
何か方法があるのかもしれないけど、とりあえず動かす権限にこだわりはないので、root権限で動かすってことでOKにしました。
まとめ
なんか納得いかないけど、とりあえず動いたのでいいか...。
でも、Dockerとかpodmanって、本気で使おうとするとどうでもいいようなバッドノウハウが大量に必要になる気がします。
それに、コンテナシステムって、ただ使うだけなら簡単だけど、イメージ作るのが異常にめんどくさい。
毎回環境がリセットされるんで、ビルドのたびにダウンロードが始まっちゃうんですよね。(まぁ、インストール途中のイメージを保存しておいてそこから作業すればその分はショートカットできますね。ただ、最終的には通しで確認したいのでやっぱり時間がかかる)
他にも、ログが消えちゃったり、本番で使うのはなんかいろいろ心配な点が多数あるんですよね。
ネットの情報だと、とりあえず動きました、開発環境で使ってます見たいな記事しかないけど、本番環境でちゃんと使うのはみんなどうしてるんだろうか…。
podmanの場合、ユーザー権限で動かすといろいろ制約もあるらしいので、結局root権限で動かす方が楽っぽいです。
※例えば1024未満のポート番号を公開することができないので、ユーザー権限で動かしたWebサーバーを直接80番とかで公開することができません。
ネットの情報で大体何とかなるんだけど、1冊なにか本を買っておきたいところです。