From a8c3f1b88718608d950ccfe59e4fadfd62d8cf6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=A1=D0=B0?= =?UTF-8?q?=D0=B1=D0=B8=D0=BB=D0=B8=D0=BD?= Date: Sat, 25 Apr 2026 13:39:46 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=BE=D1=82=D0=B0=D1=86=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=BB=D0=BE=D0=B3=D0=BE=D0=B2=20Traefik?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/docker-compose.yml | 11 +++++++++++ docker/logrotate/Dockerfile | 6 ++++++ docker/logrotate/entrypoint.sh | 9 +++++++++ docker/logrotate/logrotate.conf | 12 ++++++++++++ 4 files changed, 38 insertions(+) create mode 100644 docker/logrotate/Dockerfile create mode 100644 docker/logrotate/entrypoint.sh create mode 100644 docker/logrotate/logrotate.conf diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 52cc5ec..a8ca1b1 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -167,6 +167,17 @@ services: - "4000:4000" restart: unless-stopped + # ================== Ротация логов Traefik ================== + logrotate: + build: + context: ./logrotate + dockerfile: Dockerfile + volumes: + - traefik-logs:/var/log/traefik:rw + networks: + - eventhub-net + restart: unless-stopped + networks: eventhub-net: driver: bridge diff --git a/docker/logrotate/Dockerfile b/docker/logrotate/Dockerfile new file mode 100644 index 0000000..d5e2877 --- /dev/null +++ b/docker/logrotate/Dockerfile @@ -0,0 +1,6 @@ +FROM alpine:latest +RUN apk add --no-cache logrotate dcron tzdata +COPY logrotate.conf /etc/logrotate.conf +COPY entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh +ENTRYPOINT ["/entrypoint.sh"] \ No newline at end of file diff --git a/docker/logrotate/entrypoint.sh b/docker/logrotate/entrypoint.sh new file mode 100644 index 0000000..f5c53ab --- /dev/null +++ b/docker/logrotate/entrypoint.sh @@ -0,0 +1,9 @@ +#!/bin/sh +# Запускаем cron в фоне +crond -f & +# Ждём, пока cron стартует +sleep 2 +# Добавляем задание в crontab (запуск logrotate каждый час) +echo "0 * * * * /usr/sbin/logrotate /etc/logrotate.conf" | crontab - +# Бесконечный цикл, чтобы контейнер не завершался +tail -f /dev/null \ No newline at end of file diff --git a/docker/logrotate/logrotate.conf b/docker/logrotate/logrotate.conf new file mode 100644 index 0000000..332ed49 --- /dev/null +++ b/docker/logrotate/logrotate.conf @@ -0,0 +1,12 @@ +/var/log/traefik/access.log { + daily + rotate 7 + compress + delaycompress + missingok + notifempty + create 0644 root root + postrotate + # сигнал для переоткрытия файла (необязательно, Traefik переоткроет автоматически при необходимости) + endscript +} \ No newline at end of file