From 33001a9028d0ad12d2992dda295fd570714ca237 Mon Sep 17 00:00:00 2001 From: Stefan Becker Date: Tue, 9 Jul 2019 21:14:36 +0300 Subject: create: apply defaults on image healthcheck options If the image doesn't provide any options, e.g. interval, timeout, etc., then apply the Docker defaults when creating the container. Otherwise the defaults will be left 0 and podman doesn't schedule the healtcheck service & timer for the container or incorrectly reports unhealthy state when the check is executed. Fixes #3525 Signed-off-by: Stefan Becker --- cmd/podman/shared/create.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'cmd/podman') diff --git a/cmd/podman/shared/create.go b/cmd/podman/shared/create.go index 17455c4c9..9ce20047b 100644 --- a/cmd/podman/shared/create.go +++ b/cmd/podman/shared/create.go @@ -115,6 +115,24 @@ func CreateContainer(ctx context.Context, c *GenericCLIResults, runtime *libpod. if err != nil { return nil, nil, errors.Wrapf(err, "unable to get healthcheck for %s", c.InputArgs[0]) } + + if healthCheck != nil { + // apply defaults if image doesn't override them + if healthCheck.Interval == 0 { + healthCheck.Interval = 30 * time.Second + } + if healthCheck.Timeout == 0 { + healthCheck.Timeout = 30 * time.Second + } + /* Docker default is 0s, so the following would be a no-op + if healthCheck.StartPeriod == 0 { + healthCheck.StartPeriod = 0 * time.Second + } + */ + if healthCheck.Retries == 0 { + healthCheck.Retries = 3 + } + } } } } -- cgit v1.2.3-54-g00ecf