fix: php-fpmをexec php-fpm -Fで起動しCrashLoopBackOff(9000二重bind)/502を修正
Helm Chart Release / release-chart (push) Successful in 6s

setupシェルの子として起動していたためコンテナ再起動時にシェル(PID1)がSIGTERMを子へ転送せず、旧php-fpmが9000を握ったまま残存し次回起動が Address in use で失敗する自己増殖ループに陥っていた。execでphp-fpmをPID1にしシグナルを直接受けさせ、-Fで必ずフォアグラウンド起動にする。
This commit is contained in:
2026-09-06 19:54:49 +09:00
parent 6de85b9ad4
commit b872dd4bd9
5 changed files with 89 additions and 2 deletions
+10 -1
View File
@@ -252,7 +252,16 @@ spec:
{{- end }}
echo "Setup complete, starting PHP-FPM..."
php-fpm
# exec で php-fpm をコンテナの PID1 に置き換える。
# 目的: setup シェルを介さず php-fpm 自身が SIGTERM/SIGKILL を直接受け取れる
# ようにする。シェルは既定で子プロセスへシグナルを転送しないため、exec せず
# `php-fpm`(子)のまま起動すると、コンテナ再起動時にシェル(PID1)だけが落ちて
# 旧 php-fpm が一時的に残存し、9000 を握ったまま次回起動が
# 「unable to bind ... '9000': Address in use」で失敗して CrashLoopBackOff に陥る。
# exec すれば php-fpm が PID1 になり、停止時に 9000 が確実に解放される。
# -F(--nodaemonize): 設定に依存せず必ずフォアグラウンドで起動する
# (デーモン化して master が背後に残る事故を防ぐ)。
exec php-fpm -F
ports:
- containerPort: 9000 # PHP-FPMは9000ポートでリッスン
volumeMounts: