ドッカーコンテナのボリュームに書き出しているログをローテーションするには?

ショコラ
ショコラ

ドッカーコンテナのボリュームに書き出しているログをローテーションするには?

logrotate でログファイルをローテーションさせます。
logrotate -f /etc/logrotate.d/nginx で手動で実行できます。

もっさん先輩
もっさん先輩

/etc/logrotate.d/syslog には↓のように記載されていました。参考まで。

/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    missingok
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

nginx の設定ファイルを用意しました。

# 対象のログファイル
(ボリュームのパス)/var/log/nginx/access.log
(ボリュームのパス)/var/log/nginx/error.log
{
  # 777 のディレクトリ対応
  su root root
  # ログファイルが空っぽでもローテーションを行う。
  ifempty
  # ログファイルがなくてもエラーにしない。
  missingok
  # ログファイルを圧縮する。
  #compress
  # 毎日ローテーションさせる。
  daily
  # 10世代分ログを残す。
  rotate 10
  postrotate
    docker exec docker-nginx-1 sh -c 'kill -USR1 `cat /var/run/nginx.pid`'
  endscript
}

アパッチの設定ファイルを用意しました。

# 対象のログファイル
(ボリュームのパス)/var/log/httpd/access_log
(ボリュームのパス)/var/log/httpd/error_log
(ボリュームのパス)/var/log/httpd/ssl_access_log
(ボリュームのパス)/var/log/httpd/ssl_error_log
(ボリュームのパス)/var/log/httpd/ssl_request_log
{
  # 777 のディレクトリ対応
  su root root
  # ログファイルが空っぽでもローテーションを行う。
  ifempty
  # ログファイルがなくてもエラーにしない。
  missingok
  # ログファイルを圧縮する。
  #compress
  # 毎日ローテーションさせる。
  daily
  # 10世代分ログを残す。
  rotate 10
  postrotate
    docker exec docker-httpd-1 sh -c 'kill -USR1 `cat /var/run/httpd/httpd.pid`'
  endscript
}

手動でローテートする場合は↓を実行します。

logrotate -f /etc/logrotate.d/nginx
logrotate -f /etc/logrotate.d/httpd

以上

Scroll to Top