【发布时间】:2017-09-28 17:21:27
【问题描述】:
creating a new service使用docker-py SDK时有没有办法指定healthcheck命令?
此选项在 docker cli 中使用标志 '--health-cmd' 以及 SDK 在创建新容器运行时可用,但即使使用低级 API,我也找不到为服务指定运行状况检查命令的方法.
【问题讨论】:
creating a new service使用docker-py SDK时有没有办法指定healthcheck命令?
此选项在 docker cli 中使用标志 '--health-cmd' 以及 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
【讨论】: