You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Docker Compose部署后无法连接ClickHouse的问题求助

问题分析与修复方案

核心错误点

1. 容器间通信端口使用错误

Docker Compose中,容器之间通过服务名通信时,需要使用容器内部的端口,而非映射到主机的端口。你的ClickHouse容器内部HTTP端口是8123,主机映射端口是18123,但Java客户端连接时用了18123,这是错误的。

2. depends_on不保证服务就绪

depends_on仅控制容器启动顺序,不确保ClickHouse服务已经完成初始化并可以接受连接。当my-service启动时,ClickHouse可能还在启动过程中,导致连接被拒绝。

3. 表名拼写错误

代码中的my_tabke是拼写错误,应该是my_table,即使连接成功,后续查询也会报错。


修复步骤

步骤1:修正连接端口与表名

将Java客户端的连接地址改为容器内部端口8123,同时修正表名拼写:

val clickHouseNode = ClickHouseNode.of("http://my-clickhouse-db:8123")
val clickhouseClient = ClickHouseClient.newInstance(clickHouseNode.protocol)
clickHouseClient.read(clickHouseNode)
    .format(ClickHouseFormat.JSONEachRow)
    .query("select * from my_table")
    .executeAndWait()
    .records()

步骤2:添加服务就绪等待机制

方式一:启动脚本中加入等待逻辑

在my-service的启动脚本中添加循环检查,确保ClickHouse就绪后再启动服务:

# 等待ClickHouse服务就绪
until curl -s http://my-clickhouse-db:8123/ping | grep -q "Ok"; do
    echo "Waiting for ClickHouse to start..."
    sleep 2
done
# 启动业务服务
java -jar your-service.jar

将这段脚本设为my-service容器的启动命令。

方式二:使用Docker Compose健康检查(需Compose版本3.8+)

修改docker-compose.yml,给ClickHouse添加健康检查,并让my-service等待其健康状态:

services:    
  my-clickhouse-db:
    image: clickhouse/clickhouse-server:23.9.1.1854-alpine
    ulimits:
      nofile:
        soft: 262144
        hard: 262144
    ports:
      - 18123:8123
      - 9000:9000
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8123/ping"]
      interval: 5s
      timeout: 3s
      retries: 10

  my-service:
    build:
      context: .
      target: myService
    ports:
      - 8082:8082
    depends_on:
      my-clickhouse-db:
        condition: service_healthy

步骤3:验证网络连通性

如果修复后仍有问题,可进入my-service容器内部,用curl测试ClickHouse连接:

docker exec -it <my-service容器ID> curl http://my-clickhouse-db:8123/ping

若返回Ok,说明网络正常,问题可能出在客户端配置或ClickHouse的权限设置上。

内容的提问来源于stack exchange,提问作者Good

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 06:15:13