docker-py:是否可以将healthcheck命令添加到services.create?

时间:2017-09-28 07:53:32

标签: python docker dockerpy

有没有办法在creating a new service使用docker-py SDK时指定运行状况检查命令?

在创建新容器运行时,使用标志'--health-cmd'以及SDK中的docker cli中可以使用此选项但是我找不到为服务指定运行状况检查命令的方法,即使使用低值也是如此等级API。

1 个答案:

答案 0 :(得分:0)

SDK中没有任何功能。所以在他们的git repo上打开问题并要求他们添加该功能。直到那时你可以使用我建立的以下解决方法

input_str = "2548,0.8987,0.8987,0.1548"
list= input_str.split(",") #Split string over ,
list.pop() #pop last element
print(",".join(list)) #joining list again over ,

输出如下

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)