等待 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
以下是 python
和 docker-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()
检查文件是否已创建。
我正在 Python 中编写一些测试程序。在一个测试中,我使用的容器在容器启动时从数据库加载数据。
测试中我修改了数据库中的数据,然后os.system("docker-compose restart predict")
重启了容器,所以容器中加载了最新的数据。
是否有(除了 wait-for-it.sh
存储库之外)直接在 python 中等待执行直到容器启动和 运行 的选项?
To wait-for-it.sh
正在汇集容器公开的资源并等待资源可用(IP 地址、公开端口或两者)。
使用 docker-py
以下是 python
和 docker-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()
检查文件是否已创建。