我有一些正在使用docker-compose运行的测试。问题在于docker日志保存在容器内(这使调试变得复杂)。
我正在寻找一种配置docker-compose的方法,以将所有日志保存在我正在运行测试的机器上,而不是容器上。最好是对docker-compose.yml文件进行一些配置,但我愿意接受任何建议
答案 0 :(得分:1)
保存您的日志并需要重新配置的不是docker-compose
。它本身就是docker
或您的服务,在docker内部运行,具体取决于您指的是什么日志。
如果您谈论的是docker
日志,则应参考docker日志驱动程序配置页面:
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
中看到所有这些文件
答案 1 :(得分:0)
我猜您正在寻找的场景是,您的Docker容器散布在多个主机上。因此,可能需要将docker容器设置为主机卷,并查看是否可以将主机卷映射到共享文件系统。
或编写一些在docker主机上运行的脚本,以使用scp命令等将日志文件从docker主机上映射的docker卷复制到您选择的远程位置。
或使用一些日志聚合框架作品https://stackify.com/log-aggregation-101/