如何使用docker-compose运行查看日志输出?

o2g1uqev  于 2023-03-17  发布在  Docker
关注(0)|答案(4)|浏览(223)

当我使用docker-compose up时,我可以在docker-compose.yml文件中看到所有容器的日志。
但是,当我使用docker-compose run app时,我只能看到app的控制台输出,而看不到app所依赖的任何服务。

hc2pp10m

hc2pp10m1#

在编写本文时,docker-compose run命令没有提供查看其他服务日志的开关,因此您需要使用docker-compose logs命令来查看所需的日志。

更新日期:2022年6月10日

正如@Sandburg docker compose所评论的,现在已经集成到docker中。正如这里所描述的,大多数docker compose命令都可以调用相同的方式,只是没有连字符。因此,docker compose代替docker-compose
新的Compose V2支持将compose命令作为Docker CLI的一部分,现已推出。
Compose V2将合成功能集成到Docker平台中,继续支持以前的大多数Docker合成功能和标志。您可以使用Docker合成而不是Docker合成,通过将连字符(-)替换为空格来运行Compose V2。

更新日期:2019年7月1日

docker-compose logs <name-of-service>

适用于所有服务

docker-compose logs

使用documentation中的以下选项:
用法:日志[选项] [服务...]
选项:
--no-color产生单色输出。
-f,--follow跟踪日志输出。
-t,--时间戳显示时间戳。
--tail=“all”从每个容器的日志末尾开始显示的行数。

参见Docker日志

您可以在分离模式下启动Docker撰写,并在以后将自己附加到所有容器的日志。如果您完成了日志查看,则可以将自己从日志输出中分离,而无需关闭您的服务。
1.使用docker-compose up -d在分离模式下启动所有服务-d)(在分离模式下看不到任何日志)
1.使用docker-compose logs -f -t自己附加到所有正在运行的服务的日志,而-f表示您遵循日志输出,-t选项为您提供时间戳(请参见Docker reference
1.使用Ctrl + zCtrl + c将自己从日志输出中分离而不关闭正在运行的container
如果您对单个容器的日志感兴趣,可以使用docker关键字:
1.使用docker logs -t -f <name-of-service>

保存输出

要将输出保存到文件中,请将以下内容添加到logs命令中:

  1. x1米11米1x
3npbholx

3npbholx2#

如果您想查看终端中所有服务的输出日志。

docker-compose logs -t -f --tail <no of lines>

例如:假设您要记录所有服务的最后5行输出
docker-compose logs -t -f --tail 5
如果您希望记录特定服务的输出,则可以按以下方式进行:

docker-compose logs -t -f --tail <no of lines> <name-of-service1> <name-of-service2> ... <name-of-service N>

用法:
例如,假设您有API和门户服务,那么您可以执行以下操作:
docker-compose logs -t -f --tail 5 portal api
其中5表示两个日志的最后5行。
参考:https://docs.docker.com/v17.09/engine/admin/logging/view_container_logs/

xxslljrj

xxslljrj3#

1.使用以下命令以分离模式启动container:docker-compose up -d
1.要查看容器,请用途:docker ps
1.要查看容器的日志:docker logs <containerid>

xwbd5t1u

xwbd5t1u4#

不幸的是,我们需要将docker-compose logsdocker-compose run分开运行。为了使其可靠地工作,我们需要抑制docker-compose run退出状态,然后重定向日志并以正确的状态退出。

#!/bin/bash
set -euo pipefail
docker-compose run app | tee app.log || failed=yes
docker-compose logs --no-color > docker-compose.log
[[ -z "${failed:-}" ]] || exit 1

相关问题