要するに
nginx の Dockerfile には STOPSIGNAL SIGQUIT
を書こう。
でもそのうち書かなくてよくなるかもね。
2020-12-07 追記: 書かなくてよくなった。
メモ書き
発端は こちらの記事
- nginx において TERMはfast shutdown、QUITはgraceful shutdown である
- nginx の公式イメージでは STOPSIGNAL SIGTERMを使っている
- なので SIGQUITを使うようにする ことで graceful shutdown となる
- QUIT を使えば graceful shutdown なのに、なぜそうしていないのか
- 過去、 SIGQUITを使うと、Unixドメインソケットを使っている場合は正しく終了しないバグ が nginx にあったから
- ただし このバグは修正済み(2020-06-01)
- 2020-07-05 現在のmainline最新バージョン(1.19.0) にはまだ含まれていない
↑の記事を要約しておこうと思い各リンク先を調べていたら、 デフォルトをSIGQUITにするというissue を発見した。
- この issue を立てたのは↑の記事の著者である
- 2020-06-02 に we can try moving to SIGQUIT. との返事をもらっている
- この変更が入れば
STOPSIGNAL SIGQUIT
がデフォルトになるので追加の設定が不要になる
2020-12-07 追記: 変更のPRがマージされた
ので、1.19.1 以降は STOPSIGNAL SIGQUIT
がデフォルトになっている。