fix: php-fpmをexec php-fpm -Fで起動しCrashLoopBackOff(9000二重bind)/502を修正
Helm Chart Release / release-chart (push) Successful in 6s
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:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user