dockerコンテナ内のnginxにログを開き直させる方法(logrotate)

 

たぶん、logrotate と組み合わせるときに必要な情報と思いますが、Docker Hubで配布されているnginxの公式dockerイメージ(alpine版)で、nginx にログを開き直させる方法を調べたので、書いておきます。

$ docker kill -s USR1 コンテナ名

または、次の方法でも行けるでしょう。

$ docker kill -s HUP コンテナ名

もちろん、こんな方法でも開き直せます。

$ docker exec nginx-container nginx -s reopen

つか、docker kill なんてコマンドがあるんですね。知らなかった…。

最近、コンテナ内のnginxが吐くログの logrotate でつまづいていたんですが、どうも、手動で logrotate をデバッグすると動くけど、自動でログローテートするとエラーになるという事で困ってまして。

色々と試したところ、次のコードで動くことが確認できました。(docker 側から /var/log/nginx を volume マウント済みの場合)

/var/log/nginx/*log {
    daily
    rotate 10
    missingok
    notifempty
    sharedscripts
    compress
    delaycompress
    postrotate
        docker kill -s USR1 コンテナ名 >/dev/null 2>&1
    endscript
}
Hatena Pocket Line

コメントを記入