一、创建项目目录

创建一个目录来存放 ClickHouse 的 Docker Compose 配置文件和挂载的数据:

mkdir -p ~/clickhouse-docker
cd ~/clickhouse-docker

二、创建配置目录和文件

在项目目录下创建用于存放 ClickHouse 配置文件的目录:

mkdir -p config data

三、编写 docker-compose.yml 文件

在项目目录下创建 docker-compose.yml 文件并添加以下内容:

#version: '3.8'

services:
  clickhouse-server:
    image: clickhouse/clickhouse-server:latest
    container_name: clickhouse-server
    restart: always
    ports:
      - "8123:8123"  # HTTP port
      - "9000:9000"  # TCP port
    volumes:
      - ./config/clickhouse-server:/etc/clickhouse-server
      - ./data:/var/lib/clickhouse
    environment:
      - CLICKHOUSE_DB=default
      - CLICKHOUSE_ADMIN_PASSWORD=your_admin_password
      - TZ=Asia/Shanghai
    privileged: true
    networks:
      - clickhouse_network

networks:
  clickhouse_network:
    driver: bridge

volumes:
  clickhouse_data:
    driver: local

四、启动 ClickHouse 服务

docker-compose.yml 文件所在的目录中运行以下命令启动 ClickHouse:

docker-compose up -d

五、检查 ClickHouse 容器状态

您可以通过以下命令查看 ClickHouse 容器是否正常运行:

docker ps
  1. 首次启动时,主机目录 ./config 是空的,容器启动后会尝试从这个空目录中读取配置文件,可能会导致启动失败。
  2. 为了避免这个问题,先不挂载,让容器生成默认配置文件:

    # 先注释掉 volumes 中的 ./config:/etc/clickhouse-server,启动一次容器
    docker-compose up -d
  3. 复制容器 /etc/clickhouse-server/ 目录到主机:

    docker cp  clickhouse-server:/etc/clickhouse-server/ config/

六、修改 docker-compose.yml 再次挂载配置目录

  1. 将生成的 config 文件夹复制到主机的项目目录 ./config
  2. docker-compose.yml 中恢复 ./config:/etc/clickhouse-server 的挂载配置。
  3. 重新启动容器:

    docker-compose down
    docker-compose up -d

七、连接到 ClickHouse

  1. 使用以下命令连接到 ClickHouse 容器内的 ClickHouse 客户端:

    docker exec -it clickhouse-server clickhouse-client
  2. 连接到 ClickHouse 后,您可以执行 SQL 查询以验证连接是否成功。例如:

    SHOW DATABASES;

八、停止和删除 ClickHouse 容器

  • 停止容器:

    docker-compose down
  • 删除数据卷(如果不需要保留数据):

    docker volume rm clickhouse_docker_clickhouse_data

注意事项

  • 配置文件:根据需要修改 config.xmlusers.xml 文件中的配置。
  • 数据目录:数据目录挂载到主机上可以避免数据丢失,并使数据在容器重启后依然存在。