Поверните журнал для AP в Docker-контейнере - PullRequest
1 голос
/ 31 марта 2019

У меня есть приложение, которое записывает журнал в файл (пример / var / log / my_app).

До Docker я использовал supervisor для запуска моего приложения и logrotate.d для журналов ротации.Logrotate.d запускает скрипт для супервизора для перезапуска моего приложения после ротации журнала (для удаления старого файла журнала и создания нового):

supervisor restart my_app

Как мне поступить с Docker?

Как язнать, что если мы используем контейнер Docker только с одним запущенным приложением, нам не следует использовать супервизор (запуск и перезапуск сделает Docker).Итак, как я могу использовать logrotate.d для этого?

  1. Создать «том» для log dir и настроить logrotate.d для перезапуска контейнера Docker?Но я думаю, что это не очень хорошая идея.

  2. Использовать logrotate.d в контейнере Docker с моим приложением?Для каждого образа Docker я установлю logrotate.d и вместо запуска скрипта для супервизора я должен запустить скрипт для закрытия моего приложения (kill -9 или что-то еще).

1 Ответ

0 голосов
/ 31 марта 2019

Если вы решили перейти на Docker, вам также следует адаптировать свое приложение.Приложения, работающие в контейнерах, должны записывать свои журналы в консоль (вне системы).Вы можете добиться этого с помощью приложения CONSOLE в конфигурации логгера.Как только это будет сделано, вы можете проверить свои журналы снаружи контейнера с помощью:

docker logs <container_name>

Вы также можете следить за журналами (как вы бы сделали с "tail -f"):

docker logs -f <container_name>

Вы также можете изменить драйвер ведения журнала, используемый вашим контейнером, и делать более сложные вещи с вашими журналами.Подробности здесь: https://docs.docker.com/config/containers/logging/configure/

...