3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【docker-compose】Nginxコンテナのログをローテートする

Last updated at Posted at 2020-05-15

docker-composeで動かしているNginxコンテナのログをローテートする方法です。気づいたらログでディスクが溢れちゃった...となる前に設定しておくことをおススメします。

ホスト側にNginxコンテナのログディレクトリがマウントされているとします。

1. ホスト側でlogrotateの設定を行う

設定はよしなに変更してください。

/etc/logrotate.d/nginx
/path/to/nginx/logs/*.log
{
    missingok
    notifempty
    daily
    rotate 10
    compress
    delaycompress
    sharedscripts
    postrotate
        /usr/local/bin/docker-compose -f /path/to/docker-compose.yml kill -s HUP docker-service-name
    endscript
}
  • postrotate ではローテート後の処理を記述します。ローテーションを行ってもNginxは過去のログファイルに追記し続けるため、ローテート後にNginxにログを開き直させます。
  • シグナルは USR1 だと無理っぽい
  • 動かない場合はログファイルのパーミッションを確認しましょう
  • docker-service-name はdocker-composeの services のディレクティブ名であり、コンテナ名ではないことに注意
docker-compose.yml
...
services:
  nginx: // これ
...

2. テストする(強制 logrotate

$ logrotate -f /etc/logrotate.conf
$ ll /path/to/nginx/logs
合計 xxxxxxx
-rw-r--r-- 1 user user xxxxxxxx  5月 15 14:50 access.log
-rw-r--r-- 1 user user xxxxxxxx  5月 15 14:50 access.log-20200515
-rw-r--r-- 1 user user xxxxxxxx  5月 15 14:50 error.log
-rw-r--r-- 1 user user xxxxxxxx  5月 15 14:50 error.log-20200515
...

うまくいけば新しいログが日付のついていない *.log の方に追記されていきます。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?