如何将docker-compose up -d --build运行产生的日志保存到文件
docker-compose构建及运行日志本地保存方法
注意:加
-d参数后台启动时,控制台只会输出构建阶段的日志,服务启动后的运行时日志不会实时打印到控制台,需要通过以下方式获取存储。
方法1:执行命令时直接重定向输出(适合保存构建阶段日志)
直接用shell的重定向能力把命令执行过程的所有输出写入本地文件:
- 仅保存到文件,控制台不输出:
执行命令:docker-compose up -d --build > build_full.log 2>&1
说明:>将标准输出写入build_full.log,2>&1会把构建过程中产生的错误输出也合并到同一个文件,避免丢失异常日志。 - 同时在控制台打印+保存到文件:
执行命令:docker-compose up -d --build 2>&1 | tee build_full.log
可以实时看到构建进度,同时所有日志会同步写入本地文件。
方法2:导出已启动服务的运行日志
如果已经用-d参数后台启动了服务,可以用docker-compose自带的logs命令导出所有容器的运行日志:
- 导出全量历史运行日志:
docker-compose logs > runtime_full.log - 导出最近100行日志:
docker-compose logs --tail 100 > runtime_recent.log - 导出近24小时的日志:
docker-compose logs --since 24h > runtime_24h.log
方法3:配置自动持久化日志(适合长期运行的服务)
可以在docker-compose.yml中直接配置日志驱动,实现日志自动轮转存储,不需要手动执行导出命令:
version: '3' services: # 替换为你自己的服务名 app: image: python:3.8.12-bullseye # 其他服务配置... logging: driver: "json-file" options: # 单个日志文件最大10M max-size: "10m" # 最多保留3个日志文件,超出自动删除旧文件 max-file: "3"
配置后日志默认存储在宿主机的/var/lib/docker/containers/<容器ID>/<容器ID>-json.log路径下,会自动按配置的规则轮转,不会出现单日志文件过大占满磁盘的问题。
内容的提问来源于stack exchange,提问作者Joseph Adam
相关产品推荐
相关产品推荐

