要在 Docker Compose 中部署 ClickHouse Server 24.6 版本,你可以使用以下 docker-compose.yml 文件。该配置包含基本的单节点 ClickHouse 服务,并暴露默认端口(HTTP: 8123,TCP/Native: 9000)。
✅ docker-compose.yml 示例
version: '3.8'
services:
clickhouse-server:
image: clickhouse/clickhouse-server:24.6
container_name: clickhouse-server
ports:
- "8123:8123" # HTTP 接口
- "9000:9000" # Native TCP 接口
- "9009:9009" # Internal replication port (可选)
volumes:
- ./clickhouse_data:/var/lib/clickhouse
- ./clickhouse_log:/var/log/clickhouse-server
- ./config.xml:/etc/clickhouse-server/config.d/custom.xml # 可选自定义配置
environment:
- CLICKHOUSE_USER=default
- CLICKHOUSE_PASSWORD=your_strong_password # 建议修改为强密码
ulimits:
nofile:
soft: 262144
hard: 262144
restart: unless-stopped
📁 目录结构建议
在你的项目目录下创建如下结构:
.
├── docker-compose.yml
├── clickhouse_data/ # 数据持久化目录(自动创建)
├── clickhouse_log/ # 日志目录
└── config.xml # (可选)自定义配置文件
如果你不需要自定义配置,可以删除
volumes中对应config.xml的那一行。
🔐 安全提示
- 不要在生产环境中使用默认密码。上面示例中通过环境变量设置了用户和密码。
- ClickHouse 默认用户是
default,可通过CLICKHOUSE_USER和CLICKHOUSE_PASSWORD环境变量覆盖。 - 如需更复杂的用户/权限管理,建议挂载自定义的
users.xml或使用config.d/下的配置片段。
▶️ 启动服务
docker-compose up -d
验证是否运行成功:
# 检查容器状态
docker-compose ps
# 测试 HTTP 接口
curl http://localhost:8123/
# 应返回 "Ok."
📝 补充:自定义 config.xml 示例(可选)
如果你需要调整配置(如监听所有地址、开启压缩等),可以创建 config.xml:
<!-- config.xml -->
<yandex>
<listen_host>::</listen_host> <!-- 允许 IPv6 和 IPv4 -->
<max_connections>4096</max_connections>
<keep_alive_timeout>300</keep_alive_timeout>
</yandex>
注意:这个文件会被挂载到
/etc/clickhouse-server/config.d/custom.xml,ClickHouse 会自动合并配置。
如需集群部署、ZooKeeper 集成或备份策略,也可以进一步扩展此配置。需要的话可以继续问我!