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




Это не 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.
Я предполагаю, что сценарий, который вы ищете, заключается в том, что у вас есть докер-контейнеры, разбросанные по нескольким хост-машинам. поэтому, вероятно, вам нужно сделать контейнер докера для тома хост-машины и посмотреть, можно ли сопоставить том хоста с общей файловой системой.
или напишите несколько скриптов, которые выполняются на хост-машинах докеров, для копирования файлов журнала из сопоставленного тома докеров на хосте докеров в удаленное место по вашему выбору с помощью команды scp и т. д.
или используйте какой-нибудь фрейм агрегации журналов https://stackify.com/log-aggregation-101/
Как именно сделать вторую? Я хочу, чтобы мои журналы были на томе, а не внутри контейнера.