如何检查docker-compose up -d命令的状态

时间:2018-02-14 09:22:45

标签: python docker docker-compose pexpect

当我们运行docker-compose up-d命令以使用docker-compose.yml文件运行泊坞窗时,它会开始构建图像或从注册表中提取图像。我们可以在终端上看到这个命令的每一步。

我正在尝试从python脚本运行此命令。该命令成功启动但在命令之后,我不知道该进程已完成多少。有没有什么方法可以监视docker-compose up -d命令的状态,以便脚本可以让用户(使用脚本的用户)知道进程已经完成了多少,或者docker-compose命令是否因为一些原因。?

由于

CODE:

from pexpect import pxssh

session = pxssh.pxssh()
if not session.login(ip_address,<USERNAME>, <PASSWORD>):
    print("SSH session failed on login")
    print(str(session))
else:
    print("SSH session login successfull")
    session.sendline("sudo docker-compose up -d")
    session.prompt()
    resp = session.before
    print(resp)

2 个答案:

答案 0 :(得分:2)

您可以通过以下方式查看docker-compose日志

  1. 使用docker-compose up -d以分离模式启动所有服务(-d) (您不会在分离模式下看到任何日志)
  2. 使用docker-compose logs -f -t将自己附加到所有日志中 运行服务,而-f表示你遵循日志输出和 -t选项为您提供了很好的时间戳(Docs
  3. credit

答案 1 :(得分:0)

我如何调试小问题是运行:

after

这样我就可以看到单个服务的输出。如果服务具有依赖性,您可以始终启动多个服务,如下所示:

docker-compose up {service_name} 

另外我使用:

docker-compose up {service_name1} {service_name2}

要查看已在运行的服务的日志,或者:

docker-compose logs -f -t {service_name1}

请注意,上面的命令需要容器名称而不是服务名称

通过这种方式,您可以确保服务一切按预期工作,然后您可以按照其他答案中的建议以分离模式启动它们