在 DDEV-Local 中使用 Compose 文件控制 Healthcheck

Controlling Healthcheck with a Compose file in DDEV-Local

使用 DDEV Local 的项目有时会无法通过健康检查,但最终会变得可用。有人如何禁用健康检查以更好地诊断容器中发生的事情?

感谢 docker-composer 的集成,我们可以为健康检查创建一个 compose 文件,并根据需要调整其设置。

开始添加一个 docker-compose.healthcheck.yaml 文件到您的 .ddev 目录。

然后要禁用健康检查,它应该看起来像这样:

version: '3.6'
services:
  web:
    healthcheck:
      test: ['CMD','true'] //disable the healthcheck

在这个例子中我们使用['CMD','true']来强制测试通过,而不是使用disable:true,因为禁用键不能与默认设置的其他选项配对。

此外,如果您想在容器失败之前调整 timeout,您可以像这样调整撰写文件:

version: '3.6'
services:
  web:
    healthcheck:
      timeout: 30s //set how long before healthcheck fails

您还可以通过 Compose File Healthcheck 文档进一步熟悉健康检查的可用选项。

选项 1

要禁用 Docker 健康检查,您可以使用 test: ["NONE"].

services:
  your-service:
    healthcheck:
      test: ["NONE"]

https://docs.docker.com/compose/compose-file/compose-file-v3/#healthcheck

我使用 docker-compose 版本 1.25.0 和 Docker Compose 文档版本 '3.1'。

它对我不起作用,但在文档中有描述。

healthcheck:
  disable: true

选项 2

但是,我不知道什么原因,docker-compose.override.yml 的一部分不适用于该设置。家长docker-compose.yml有健康设置,我觉得是出错了

ERROR: Service "nginx" defines an invalid healthcheck: "disable: true" cannot be combined with other options

要在 docker-compose.override.yml 中禁用它,我使用以下设置:

healthcheck:
  test: ["CMD", "none"]

选项 3

我认为另一种禁用健康检查的方法是使用不同的 docker-compose 配置:

  • 基础 docker-compose.yml 没有健康检查。
  • 第二个 docker-compose.healthcheck.yml 将与父 docker-compose.yml:
  • 结合健康检查
# With healthcheck
docker-compose -f docker-compose.yml -f docker-compose.healthcheck.yml up

# With override
docker-compose up

# Without override and healthcheck
docker-compose -f docker-compose.yml up