【发布时间】:2018-11-29 13:09:09
【问题描述】:
我有一些使用 docker-compose 运行的测试。问题是 docker 日志保存在容器中(这使得调试变得复杂)。
我正在寻找一种方法来配置 docker-compose 以将所有日志保存在我运行测试的机器上,而不是容器上。最好配置一些 docker-compose.yml 文件,但我愿意接受任何建议
【问题讨论】:
标签: java docker logging docker-compose
我有一些使用 docker-compose 运行的测试。问题是 docker 日志保存在容器中(这使得调试变得复杂)。
我正在寻找一种方法来配置 docker-compose 以将所有日志保存在我运行测试的机器上,而不是容器上。最好配置一些 docker-compose.yml 文件,但我愿意接受任何建议
【问题讨论】:
标签: java docker logging docker-compose
不是docker-compose 保存您的日志并且必须重新配置。它是 docker 本身或您的服务,在该 docker 中运行,具体取决于您的意思是什么日志。
如果你说的是docker日志,你应该参考docker log驱动配置页面:
https://docs.docker.com/config/containers/logging/configure/
如果您在谈论由您的服务生成的日志,只需将可写卷从您的主机 PC 挂载到容器中,然后配置您的软件以登录到该文件夹。 您可以像下面的代码一样实现这一点:
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 中看到所有这些文件
【讨论】:
我猜你正在寻找的场景是你的 docker 容器分散在多台主机上。所以可能你需要将 docker 容器制作成主机卷,看看是否可以将主机卷映射到共享文件系统。
或编写一些在 docker 主机上运行的脚本,以使用 scp 命令等将日志文件从 docker 主机上的映射 docker 卷复制到您选择的远程位置。
或者使用一些日志聚合框架作品https://stackify.com/log-aggregation-101/
【讨论】: