NGINX 設定ティップス

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