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 の方に追記されていきます。