- docker-composeでnginx:alpineを起動しているが、logrotateでログをローテートさせたい。
- dockerコンテナ自体のログなら、dockerのログなら標準オプションでローテートさせることが可能だし、docker-composeのdriverにもローテートさせるオプションがある。
- が、今回のログは、docker-composeで起動したnginx:alpineのログで、それをvolumeでマウントしたホスト側のディスクに書き出しているので、docker自体をlogrotateでrestartしている。
- 基本的には通常のlogrotateと同じように
/etc/logrotate.d
配下にrotateの定義を書いたファイルを置いている。置いているのは、ホスト側のサーバだ。 - docker-composeのkillオプションでsiginalをdockerに送れるので、それでUSR1を送っている。
/etc/logrotate.d/docker_nginx
/var/log/nginx/*.log
{
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/local/bin/docker-compose -f /usr/local/docker/docker-compose.production.yml kill -s USR1 nginx
endscript
}
- docker-composeコマンドのパスや、docker-composeの定義ファイルは環境によって変わると思う。