在 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 容器输出组成 stdout
- a)在健康检查完成之前(即无缓冲)
- b)无论健康检查成功/失败