There is no functionality in the SDK. So open the issue on their git repo and ask them to add the feature. Till that time you can use the below workaround i built
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)
And output as below
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