docker-py:是否可以向 services.create 添加健康检查命令?
docker-py: Is it possible to add healthcheck commands to services.create?
creating a new service 使用 docker-py SDK 时,是否可以指定健康检查命令?
此选项在 docker cli 中使用标志 '--health-cmd' 以及在创建新容器时在 SDK 中可用 运行 但我找不到方法即使在使用低级别 API.
时,也要为服务指定 healthcheck 命令
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
creating a new service 使用 docker-py SDK 时,是否可以指定健康检查命令?
此选项在 docker cli 中使用标志 '--health-cmd' 以及在创建新容器时在 SDK 中可用 运行 但我找不到方法即使在使用低级别 API.
时,也要为服务指定 healthcheck 命令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