有没有办法在使用 docker-py SDK创建新服务时指定运行状况检查命令?
此选项在使用标志“--health-cmd”的 docker cli以及创建新容器运行时的 SDK 中可用,但即使使用低级别,我也找不到为服务指定运行状况检查命令的方法API。
有没有办法在使用 docker-py SDK创建新服务时指定运行状况检查命令?
此选项在使用标志“--health-cmd”的 docker cli以及创建新容器运行时的 SDK 中可用,但即使使用低级别,我也找不到为服务指定运行状况检查命令的方法API。
SDK 中没有任何功能。因此,在他们的 git repo 上打开问题并要求他们添加该功能。到那时您可以使用我构建的以下解决方法
from docker import client
from docker.models.services import CONTAINER_SPEC_KWARGS
from docker.types.services import ContainerSpec
init_spec = ContainerSpec.__init__
def override_init(self, *args, **kwargs):
self['HealthCheck'] = kwargs.pop("HealthCheck")
init_spec(self, *args, **kwargs)
ContainerSpec.__init__ = override_init
if 'HealthCheck' not in CONTAINER_SPEC_KWARGS:
CONTAINER_SPEC_KWARGS.append('HealthCheck')
c = client.from_env()
result = c.services.create(name="nginx", image="nginx",
HealthCheck={
"Test": ["CMD", "ls", "-alh"],
"Interval": 1000000 * 500, # 500 ms
"Timeout": 1000000 * 5 * 1000, # 5 seconds
"Retries": 3,
"StartPeriod": 1000000 * 5 * 1000 # 5 seconds
})
print(result)
并输出如下
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f617eaf4d211 nginx:latest "nginx -g 'daemon ..." About a minute ago Up About a minute (healthy) 80/tcp nginx.1.htgg23ysze00qr0kb790lyxnv