Используйте эту настройку, если нужно хранить access-логи на диске и автоматически ротировать их.
Настройка
Шаг 1: Создайте директорию для логов
mkdir -p logs
sudo chmod 777 logsШаг 2: Добавьте volume в compose.yaml
В секции bot добавьте:
volumes:
- ./translations:/translations
- ./uploads:/uploads
- ./logs:/logsШаг 3: Укажите путь к логам в .env
ACCESS_LOG_PATH=/logs/access.logШаг 4: Перезапустите бота
docker compose up -dШаг 5: Установите logrotate
(если не установлен)
# Debian/Ubuntu
sudo apt update && sudo apt install -y logrotate
# CentOS/RHEL/Fedora
sudo dnf install -y logrotateШаг 6: Создайте конфиг logrotate
sudo nano /etc/logrotate.d/rwp-shop/opt/rwp-shop/logs/access.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
copytruncate
}Примечание
Замените путь /opt/rwp-shop/logs/access.log на ваш фактический путь установки.
Шаг 7: Проверьте конфигурацию
sudo logrotate -d /etc/logrotate.d/rwp-shopФлаг -d запускает в debug-режиме без реальной ротации.
Шаг 8: Тестовый запуск ротации
sudo logrotate -f /etc/logrotate.d/rwp-shopФлаг -f принудительно выполняет ротацию.
Совет
copytruncate позволяет ротировать логи без перезапуска контейнера — файл обрезается на месте после копирования.
Примечание
Автоматический запуск Logrotate обычно запускается автоматически через cron или systemd timer (ежедневно). Проверить можно:
# Для systemd
systemctl status logrotate.timer
# Для cron
cat /etc/cron.daily/logrotate| Параметр | Описание |
|---|---|
daily | Ротация раз в день |
rotate 14 | Хранить 14 архивов |
compress | Сжимать архивы gzip |
delaycompress | Сжимать со второго архива |
missingok | Не ругаться если файла нет |
notifempty | Не ротировать пустой файл |
copytruncate | Копировать и обрезать без перезапуска |