Как сохранить журналы контейнера докеров на машине, а не в контейнере

У меня есть несколько тестов, которые я запускаю с помощью docker-compose. Проблема в том, что журналы докеров сохраняются в контейнере (что усложняет отладку).

Я ищу способ настроить docker-compose для сохранения всех журналов на машине, на которой я запускаю тесты, вместо контейнера. Желательно некоторая конфигурация файла docker-compose.yml, но я открыт для любых предложений

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
880
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Это не docker-compose, который сохраняет ваши логи и требует перенастройки. Это сам docker или ваша служба, работающая внутри этого докера, в зависимости от того, какие журналы вы имеете в виду.

Если вы говорите о журналах docker, вам следует обратиться к странице конфигурации драйвера журнала докеров: https://docs.docker.com/config/containers/logging/configure/

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

docker-compose.yml:

...
my-service:
  image: xxx
  entrypoint: ["sh", "-c", "echo 'Hello World!' > /path/inside/docker/some_log_file" ]
  volumes:
    - /path/on/host:/path/inside/docker
...

вы обслуживаете сейчас, просто войдите в /path/inside/docker/some_log_file.

На хост-машине вы увидите все эти файлы в /path/on/host.

Как именно сделать вторую? Я хочу, чтобы мои журналы были на томе, а не внутри контейнера.

Tudor 29.11.2018 14:51

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

или напишите несколько скриптов, которые выполняются на хост-машинах докеров, для копирования файлов журнала из сопоставленного тома докеров на хосте докеров в удаленное место по вашему выбору с помощью команды scp и т. д.

или используйте какой-нибудь фрейм агрегации журналов https://stackify.com/log-aggregation-101/

Другие вопросы по теме