等待 docker 容器在 python 后重新启动

Wait for docker container restart in python

我正在 Python 中编写一些测试程序。在一个测试中,我使用的容器在容器启动时从数据库加载数据。

测试中我修改了数据库中的数据,然后os.system("docker-compose restart predict")重启了容器,所以容器中加载了最新的数据。

是否有(除了 wait-for-it.sh 存储库之外)直接在 python 中等待执行直到容器启动和 运行 的选项?

To wait-for-it.sh 正在汇集容器公开的资源并等待资源可用(IP 地址、公开端口或两者)。

使用 docker-py

以下是 pythondocker-py(docker 自己的 python 库)的规范方法,它将帮助您更好地编排容器。

首先我们导入我们需要的包并为 docker 引擎创建一个客户端

import docker
import os
import time

client = docker.from_env()
container="predict"

下一步是通过调用 restat

来重启容器
client.restart(container)

或循环stop,等待停止和start

client.stop(container)
client.wait(container)
client.start(container)

容器生命周期与入口点进程生命周期

还需要区分等待容器重启等待入口进程重启.

从docker引擎的角度来看,入口进程启动的那一刻,容器就启动了。但是,该过程(如您的情况)可能需要在准备开始工作之前做一些准备工作。在这种情况下,您需要为 python 脚本创建一种机制,以了解容器中的进程已准备就绪。在进程就绪时(读取缓存后)简单地创建一个文件就足够了。该文件可以在挂载的文件系统中创建,因此您可以使用 os.path.exists() 检查文件是否已创建。