TGViewer
Записки IT специалиста Записки IT специалиста @interface31 · 8.99K subscribers
Post #6027 2.3K
Особенности ротации логов приложений в Docker

В комментариях задали вопрос: как настроить ротацию логов приложения в Docker, в частности вопрос касался веб-сервера Angie.

При этом следует понимать, что речь идет не о логах самого Docker, а именно о логах приложения, работающего в контейнере. И несмотря на то, что в данной заметке речь идет об Angie/NGINX данный подход применим к любым приложениям пишущим собственные логи.

Если мы посмотрим в типовую конфигурацию виртуального хоста Angie/NGINX, то увидим там примерно следующее:

access_log /var/log/angie/my_site.access.log;
error_log /var/log/angie/my_site.error.log;


Если ничего больше не делать, то логи будут неконтролируемо расти внутри контейнера, но при его перезапуске окажутся утеряны. И то и другое является нежелательным, поэтому будем исправлять ситуацию.

Прежде всего вынесем логи на хост, поэтому смонтируем дополнительный Volume, для этого в compose-файл добавьте:

volumes:
- /opt/my_site /logs:/var/log/angie


Теперь, после перезапуска все логи будут в /opt/my_site /logs и при перезапуске контейнера не будут потеряны.

Для их ротации воспользуемся системной службой logrotate, для этого в /etc/logrotate.d/ создадим дополнительный файл настроек для нашей службы, например angie-mysite и внесем в него следующий текст:

/opt/my_site/logs/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0644 root root
sharedscripts
postrotate
docker exec angie-mysite angie -s reopen
endscript
}


Где angie-mysite в команде docker exec – имя контейнера, убедитесь, что в вашем compose-файле есть опция:

container_name: angie-mysite


А в остальном это стандартная конфигурация logrotate, мы делаем ротацию каждый день, храним 14 архивов, все архивы, кроме предпоследнего сжимаем.

После выполнения ротации мы дополнительно посылаем серверу Angie команду reopen на переоткрытие файлов лога.

Проверить работу конфигурации можно командой:

logrotate -d /etc/logrotate.d/angie-mysite


Которая ничего не делает, но только имитирует команду ротации, таким образом вы проверите конфигурационный файл на предмет ошибок и убедитесь, что все указано верно.
  • 👍 25
  • 🤝 4
  • ❤ 2
  • 🤷‍♂ 1
More from @interface31
  1. Sep 29, 2026Что крупные заказчики проверяют на пилоте NGFW Чем крупнее сеть, тем выше требования к NGF…
  2. Sep 28, 2026Как провайдер определит, что у меня Mikrotik Таким вопросом задаются многие читатели и оче…
  3. Sep 28, 2026Геймеры здесь?! F6 выпустила квест-игру Root Cause — в ней вы на целый год становитесь дир…
  4. Sep 28, 2026Ностальгия… Ностальгия… - Мы тут тебе старенький компьютер привезем… Старенький, что сейча…
  5. Sep 28, 2026Post #6800
  6. Sep 27, 2026Ой, а что это случилось? Куда делась лицензия? Программные лицензии 1С - полное дно!!! На…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →