diff options
author | Stefan Becker <chemobejk@gmail.com> | 2019-07-09 21:14:36 +0300 |
---|---|---|
committer | Stefan Becker <chemobejk@gmail.com> | 2019-07-16 07:01:43 +0300 |
commit | 33001a9028d0ad12d2992dda295fd570714ca237 (patch) | |
tree | 3d488bd3eecc3b0905fa4bb8c60c9a1df55505b8 | |
parent | dd0ea08cefce43b4ca5e468a4bafb909f877cd58 (diff) | |
download | podman-33001a9028d0ad12d2992dda295fd570714ca237.tar.gz podman-33001a9028d0ad12d2992dda295fd570714ca237.tar.bz2 podman-33001a9028d0ad12d2992dda295fd570714ca237.zip |
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 <chemobejk@gmail.com>
-rw-r--r-- | cmd/podman/shared/create.go | 18 |
1 files changed, 18 insertions, 0 deletions
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 + } + } } } } |