Docker Nginx + Logrotate
ホストマシンのlogrotateデーモンを利用してDocker Nginxのログファイルを更新するため、コンテナの/var/log/nginx
フォルダをホストマシンと共有。
nginxのボリュームセクションに以下を追加
docker-compose.yml
volumes:
......
......
# for fail2ban settings and logrotate, share log files between host and docker nginx container
- ./container_logs/nginx:/var/log/nginx
......
......
logrotateのnginx設定ファイルを新規作成
/etc/logrotate.d/nginx
/xxx/xxx/container_logs/nginx/*.log { #---> ホストマシン上での共有ファイルまでのフルパス
daily
missingok
rotate 31
dateext
compress
delaycompress
notifempty
sharedscripts
postrotate
cd /xxx/xxx/xxx \ #---> docker-compose.ymlファイルが格納されているディレクトリ
&& docker compose -p project1 kill -s USR1 nginx
endscript
}
注) Docker Composeをプロジェクト名を付加して稼働したため、-p project1
を追加
動作確認
$ sudo logrotate -f /etc/logrotate.d/nginx
[+] Killing 1/1
✔ Container nginx Killed