L

Lararu.Blog

Make It Happen.

  • 首页
  • DEVOPS
  • Python-Dev
  • Docker
  • 关于
Home docker部署clickhouse24.8
文章

docker部署clickhouse24.8

Posted 2025-02-17 Updated 30 days ago
By Administrator
7~9 min read

好的,我们坚持 方式一(纯 cron 配置文件),这样最简洁可靠。下面我给你一个改进后的完整方案,包含注释,保证你能一眼看懂每个部分的作用。

version: '3.8'

services:
  clickhouse:
    image: clickhouse/clickhouse-server:24.8-alpine   # 使用轻量版 ClickHouse 镜像
    container_name: clickhouse-server248_crm          # 容器名称
    restart: unless-stopped                           # 异常退出后自动重启
    ports:
      - "18125:8123"   # HTTP 接口映射到宿主机 18125
      - "19002:9000"   # TCP 接口映射到宿主机 19002
    environment:
      - TZ=Asia/Seoul                # 设置时区
      - CLICKHOUSE_USER=default       # 默认用户
      - CLICKHOUSE_PASSWORD=123456    # 默认用户密码(生产环境请改为强密码)
      - CLICKHOUSE_DB=test            # 启动时自动创建 test 数据库
    volumes:
      - ./app_clickhouse/data:/var/lib/clickhouse     # 数据持久化目录
      - ./app_clickhouse/logs:/var/log/clickhouse-server # 日志持久化目录
      - ./config.xml:/etc/clickhouse-server/config.xml   # 挂载自定义配置文件
      - ./users.xml:/etc/clickhouse-server/users.xml     # 挂载用户配置文件(更安全)
    cap_add:
      - SYS_NICE   # 提升性能相关的系统能力
      - NET_ADMIN  # 网络管理能力(如需要)
      - IPC_LOCK   # 内存锁定能力,避免交换
    ulimits:
      nofile:
        soft: 262144   # 打开文件数限制(软)
        hard: 262144   # 打开文件数限制(硬)

  clickhouse-backup:
    image: alexakulov/clickhouse-backup:latest        # 社区备份工具镜像
    container_name: clickhouse-backup
    restart: unless-stopped
    environment:
      - CLICKHOUSE_HOST=clickhouse       # 通过服务名访问 ClickHouse
      - CLICKHOUSE_PORT=9000
      - CLICKHOUSE_USER=default
      - CLICKHOUSE_PASSWORD=123456
      - STORAGE=local                    # 使用本地存储,不依赖 S3
      - BACKUPS_TO_KEEP_LOCAL=7          # 保留最近 7 个备份
    volumes:
      - ./app_clickhouse/data:/var/lib/clickhouse     # 访问数据目录
      - ./backup:/backup                             # 本地备份目录
      - ./cronjobs:/etc/cron.d                       # 定时任务配置目录
    depends_on:
      - clickhouse                                   # 确保 ClickHouse 先启动

---

📄 docker-compose.yml(带详细注释)

📂 cronjobs/backup(定时任务配置文件)

# 每天凌晨2点创建本地备份
0 2 * * * root clickhouse-backup create

# 每周日凌晨3点清理过期备份(保留最近7天)
0 3 * * 0 root clickhouse-backup delete local --older-than=7d

🔑 改进点总结

• 纯配置文件方式:你只需要创建 cronjobs/backup 文件,里面写定时规则,不需要额外脚本。

• 容器内自动执行:clickhouse-backup 容器挂载到 /etc/cron.d,cron 会自动读取并执行。

• 持久化保证:数据和备份都挂载到宿主机目录,容器重启不会丢失。

• 安全性:通过 users.xml 配置密码和访问控制,避免默认无密码。

• 自动化:每天备份,每周清理,形成稳定循环。

---

👉 这样,你的部署就能做到:容器重启不丢数据,备份自动执行,过期备份自动清理。

要不要我再帮你写一个 恢复流程清单(从本地备份恢复到 ClickHouse),让你在灾难恢复时能一步步照着操作?

老版本

docker run -d \
  -p 18125:8123 \
  -p 19002:9000 \
  -v ./app_clickhouse/data:/var/lib/clickhouse \
  -v ./app_clickhouse/logs:/var/log/clickhouse-server \
  -e TZ=Asia/Seoul \
  -e CLICKHOUSE_USER=default \
  -e CLICKHOUSE_PASSWORD=123456 \
  -e CLICKHOUSE_DB=test \
  --name clickhouse-server248_crm \
  --cap-add=SYS_NICE \
  --cap-add=NET_ADMIN \
  --cap-add=IPC_LOCK \
  --ulimit nofile=262144:262144 \
  clickhouse/clickhouse-server:24.8-alpine

Docker Database
License:  CC BY 4.0
Share

Further Reading

OLDER

PVE 安装后初始化

NEWER

docker部署novnc debian

Recently Updated

  • tailscale 配置
  • docker配置用户
  • docker部署PostgreSQL
  • docker 部署 Prestashop
  • 韩国仓储型药店

Trending Tags

Python-dev Ubuntu Database PVE DevOps Docker Docker-compose

Contents

©2026 Lararu.Blog. Some rights reserved.

Using the Halo theme Chirpy