1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

dockerでnginxとphp-fpmコンテナのログをホスト側からローテーションする方法

Last updated at Posted at 2021-02-03

nginxとphp-fpmコンテナのログはホストにマウントされており、ホスト側からログをローテーションしたい場合。

ログ用ボリュームのマウント

こんな感じで、ホスト側のvolume/logs/nginxにひっつけてあったとする。

docker-compose.yml

  nginx:
    image: nginx:latest
    volumes:
      - ./volume/logs/nginx:/var/log/nginx
  php:
    image: php-fpm:latest
    volumes:
      - ./volume/logs/php-fpm:/var/log/php-fpm

ログローテーションの設定

dockerホスト側のlogrotationの設定をする。
圧縮ありなし、タイミング、個数等は適当に(例は日毎、30個、圧縮あり)。

nginx

ポイントはkill -s HUP nginxの部分。

/etc/logrotete.d/nginx

/home/username/docker/volume/logs/nginx/*.log 
{
    missingok
    notifempty
    daily
    rotate 30
    compress
    delaycompress
    sharedscripts
    postrotate
        /usr/local/bin/docker-compose -f /home/username/docker/docker-compose.yml kill -s HUP nginx
    endscript
}

php-fpm

こちらはkill -s USR1を送る。

/etc/logrotete.d/php-fpm

/home/username/docker/volume/logs/php-fpm/*.log 
{
    missingok
    notifempty
    daily
    rotate 30
    compress
    delaycompress
    sharedscripts
    postrotate
        /usr/local/bin/docker-compose -f /home/username/docker/docker-compose.yml kill -s USR1 php
    endscript
}

確認

強制的にローテーションさせて、ログがちゃんとローテーションされ、最新のものに書かれるかを確認。

logrotate -f /etc/logrotate.conf
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?