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

在使用docker-py SDK 创build新服务时,是否可以指定healthcheck命令?

这个选项在docker cli中使用'–health-cmd'标志和SDK创build一个新的容器运行时可用,但是我找不到一个方法来指定服务的健康检查命令,即使使用低级别API。

SDK中没有function。 所以打开他们的git回购问题,并要求他们添加该function。 直到那个时候,你可以使用我build立的下面的解决方法

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