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

vlurs2pr  于 2022-11-28  发布在  Docker
关注(0)|答案(4)|浏览(684)

当我们使用docker-compose.yml文件运行docker-compose up-d命令来运行dockers时,它开始构建映像或从注册表中提取映像。我们可以在终端上看到此命令的每一步。
我尝试从python脚本运行此命令。命令成功启动,但在命令之后,我不知道进程已经完成了多少。有没有什么方法可以监视docker-compose up -d命令的状态,以便脚本可以让用户(使用脚本的用户)知道进程已完成多少,或者docker-compose命令是否由于某些原因而失败。
谢谢

代码:

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)
sy5wg1nm

sy5wg1nm1#

可以通过以下方式查看docker compose日志
1.使用docker compose up -d以分离模式(-d)启动所有服务(在分离模式下看不到任何日志)
1.使用docker compose logs -f -t将您自己附加到所有正在运行的服务的日志,而-f意味着您遵循日志输出,-t选项为您提供了很好的时间戳(Docs
信用证
编辑:Docker Compose现在作为核心Docker CLI的一部分提供。docker-compose现在仍然受支持,但我现在看到的大多数文档都将docker compose作为标准。更多信息请参见https://docs.docker.com/compose/#compose-v2-and-the-new-docker-compose-command。

zpf6vheq

zpf6vheq2#

我调试小问题的方法是运行:

docker-compose up {service_name}

这样我就可以看到单个服务的输出。如果服务有依赖关系,你总是可以启动多个服务,如下所示:

docker-compose up {service_name1} {service_name2}

此外,我还使用:

docker-compose logs -f -t {service_name1}

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

docker logs -t -f {container_name}

请注意,上面的命令需要容器名称,而不是服务名称
通过这种方式,您可以逐个服务地确保一切都按预期运行,然后您可以按照其他答案中的建议以分离模式启动所有服务

e0bqpujr

e0bqpujr3#

我认为应该使用命令docker-compose top,可以检查结果,当容器运行时它不应该是空的。如果容器是stopexitCreate,它应该返回空

1dkrff03

1dkrff034#

如果需要编程方式:

  • 休眠2秒
  • 检查几秒钟前container是否已启动=〉意味着您刚刚成功部署了它

docker ps将类似于:
第一个

相关问题