检查 clickhouse 是否健康 docker-compose

mal*_*ert 7 docker docker-compose clickhouse

我需要等待 Clickhouse 启动才能启动后端服务器,但是运行状况检查不起作用。

这是我的docker-compose.yml文件:

version: '3.9'
services:
  server:
    build: .
    depends_on:
      clickhouse:
        condition: service_healthy

  clickhouse:
    image: yandex/clickhouse-server
    ports:
      - '8123:8123'
      - '9000:9000'
      - '9009:9009'
    healthcheck:
      test: ['CMD', 'curl', '-f', 'http://localhost:8123']
      interval: 5s
      timeout: 3s
      retries: 5
Run Code Online (Sandbox Code Playgroud)

但是,当我运行时docker-compose up --build,您可以看到 Clickhouse 服务器启动,一切都很好,但是运行状况检查从未通过。该命令抢先退出并出现错误:container for service "Clickhouse" is unhealthycurl -f http://localhost:8123但是,如果在此期间我在自己的计算机上(在 docker 容器之外)运行该命令,那么它会返回Ok.

那么有没有办法等待Clickhouse健康后再开始另一个服务呢?

vla*_*mir 8

试试这个方法:

    ..
    healthcheck:
      test: wget --no-verbose --tries=1 --spider http://localhost:8123/?query=SELECT%201 || exit 1
    ..
Run Code Online (Sandbox Code Playgroud)

或者

    ..
    healthcheck:
      test: wget --no-verbose --tries=1 --spider http://localhost:8123/ping || exit 1
    ..
Run Code Online (Sandbox Code Playgroud)