docker-compose配置healthcheck与service_healthy依赖后服务启动异常缓慢
你的核心认知误区有两个:
- 你不知道Docker健康检查存在默认配置参数,未显式声明的
interval(健康检查执行间隔)默认值为30秒,容器启动后会先等待interval时长才会执行第一次健康检查,而非你以为的启动后立刻/start_period结束后立刻执行检查。 - 你误解了
start_period的作用:该参数仅用于定义容器启动的缓冲窗口期,窗口期内健康检查失败不会被计入失败重试次数,完全不会改变健康检查的执行时机和执行频率。
你遇到的现象符合实际运行逻辑:你配置的start_period=1s远小于默认的30s检查间隔,第一次健康检查会在first容器启动30秒后才触发,执行sleep 1后返回成功状态,first服务才被标记为healthy,此时才会启动second服务,所以你会感知到30秒的停滞。
如果要达到你的预期执行效果,只需在healthcheck配置中显式指定更小的interval即可,修改示例:
healthcheck: test: sleep 1 timeout: 2s start_period: 1s interval: 1s # 新增配置,指定1秒执行一次健康检查
内容的提问来源于stack exchange,提问作者derM
相关产品推荐
相关产品推荐

