使用健康检查时是否可以不缓冲 docker compose 输出?

使用健康检查时是否可以不缓冲 docker compose 输出?

在 docker compose 中重新引入使用depends_on 的健康检查真是太棒了。真的厌倦了将健康检查写入每个下游容器,尤其是数据库初始化容器之类的东西。

也就是说,似乎只要我启用健康检查/依赖,这些容器的所有输出都会被缓冲,直到健康检查成功。更糟糕的是 - 如果容器由于某种原因无法启动,输出将被完全吞没,您必须四处寻找才能docker logs获得输出。

因此,如果我有一个类似的 docker compose 文件:

  mysql:
    image: mysql:8.0
    ...
    healthcheck:
      test: [ "CMD", "mysql", "-u", "username", "--password=password", "-e", "show databases;" ]
      interval: 10s
      timeout: 2s
      retries: 8640
      start_period: 20s
  ...

  health-check-check:
    image: centos:8
    depends_on:
      mysql:
        condition: service_healthy
    command: [ "-c", "echo \"mysql up\"" ]
    entrypoint: "bash"

有没有办法让 mysql 和 health-check-check 容器输出组成 std​​out

  • a)在健康检查完成之前(即无缓冲)
  • b)无论健康检查成功/失败

相关内容