侧边栏壁纸
博主头像
ProSayJ 博主等级

Talk is cheap. Show me the code.

  • 累计撰写 41 篇文章
  • 累计创建 16 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Zookeeper-docker-compose

YangJian
2025-06-22 / 0 评论 / 0 点赞 / 10 阅读 / 0 字
# ⚠️ 不再需要 version 字段
# 给zk集群配置一个网络,网络名为zk-net
networks:
  zookeeper-net:
    name: zookeeper-net

services:
  zookeeper-cluster-1:
    image: zookeeper:3.6.3
    restart: always
    container_name: zookeeper-cluster-1
    ports:
      - "2181:2181"
      - "8081:8080"
    environment:
      # 当前zk实例的id
      ZOO_MY_ID: 1
      ZOO_TICK_TIME: 20000
      ZOO_ADMIN_SERVER_ENABLED: "true"        # ✅ 启用 Web 管理页面
      # 整个zk集群的机器、端口列表
      ZOO_SERVERS: server.1=zookeeper-cluster-1:2888:3888;2181 server.2=zookeeper-cluster-2:2888:3888;2181 server.3=zookeeper-cluster-3:2888:3888;2181
      ZOO_4LW_COMMANDS_WHITELIST: ruok,stat,srvr,conf
      # ZOO_4LW_COMMANDS_WHITELIST: *  # 允许所有命令
    volumes:
      - ./data/zk1/data:/data           # 数据文件(快照)
      - ./data/zk1/datalog:/datalog     # 事务日志
      - ./data/zk1/logs:/logs           # 中的日志输出可能需要你配置 ZooKeeper 的日志级别或路径;
      - ./data/zk1/conf:/conf:ro        # 挂载配置目录为只读,是容器内只读的,若只想查看配置,可以用只读挂载;
      # 拷贝 zookeeper-cluster-1 中的配置目录到宿主机 docker cp zookeeper-cluster-1:/conf ./data/zk1/conf
      # /data/zk1/data/myid 容器内部 myid 值
    # 当前docker container加入名为zk-net的隔离网络
    networks:
      - zookeeper-net
    healthcheck:
      test: [ "CMD", "bash", "-c", "echo ruok | nc localhost 2181 | grep imok" ]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 15s

  zookeeper-cluster-2:
    image: zookeeper:3.6.3
    restart: always
    container_name: zookeeper-cluster-2
    ports:
      - "2182:2181"
      - "8082:8080"
    environment:
      ZOO_MY_ID: 2
      ZOO_TICK_TIME: 20000
      ZOO_ADMIN_SERVER_ENABLED: "true"        # ✅ 启用 Web 管理页面
      ZOO_SERVERS: server.1=zookeeper-cluster-1:2888:3888;2181 server.2=zookeeper-cluster-2:2888:3888;2181 server.3=zookeeper-cluster-3:2888:3888;2181
      ZOO_4LW_COMMANDS_WHITELIST: ruok,stat,srvr,conf
    volumes:
      - ./data/zk2/data:/data
      - ./data/zk2/datalog:/datalog
      - ./data/zk1/logs:/logs
      - ./data/zk1/conf:/conf:ro
    networks:
      - zookeeper-net
    healthcheck:
      test: [ "CMD", "bash", "-c", "echo ruok | nc localhost 2181 | grep imok" ]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 15s

  zookeeper-cluster-3:
    image: zookeeper:3.6.3
    restart: always
    container_name: zookeeper-cluster-3
    ports:
      - "2183:2181"
      - "8083:8080"
    environment:
      ZOO_MY_ID: 3
      ZOO_TICK_TIME: 20000
      ZOO_ADMIN_SERVER_ENABLED: "true"        # ✅ 启用 Web 管理页面
      ZOO_SERVERS: server.1=zookeeper-cluster-1:2888:3888;2181 server.2=zookeeper-cluster-2:2888:3888;2181 server.3=zookeeper-cluster-3:2888:3888;2181
      ZOO_4LW_COMMANDS_WHITELIST: ruok,stat,srvr,conf
    volumes:
      - ./data/zk3/data:/data
      - ./data/zk3/datalog:/datalog
      - ./data/zk1/logs:/logs
      - ./data/zk1/conf:/conf:ro
    networks:
      - zookeeper-net
    healthcheck:
      test: [ "CMD", "bash", "-c", "echo ruok | nc localhost 2181 | grep imok" ]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 15s



#### webui
#  zk-ui:
#    image: qnib/plain-zkui:latest
#    container_name: zk-ui
#    restart: unless-stopped
#    ports:
#      - "8821:9090"
#    environment:
#      ZK_SERVER: zookeeper-cluster-1:2181,zookeeper-cluster-2:2181,zookeeper-cluster-3:2181
#      ZKUI_ADMIN_USER: admin
#      ZKUI_ADMIN_PWD: admin
#      ZKUI_PORT: 9090
#    depends_on:
#      - zookeeper-cluster-1
#      - zookeeper-cluster-2
#      - zookeeper-cluster-3
#    networks:
#      - zookeeper-net

# zookeeper-cluster-docker-compose

```shell
docker cp zookeeper-cluster-1:/conf ./data/zk1
```
```shell
docker cp zookeeper-cluster-1:/conf ./data/zk2
```
```shell
docker cp zookeeper-cluster-1:/conf ./data/zk3
```


```shell
## 后台启动容器
docker-compose -f docker-compose.yml --compatibility up -d
```
```shell
### 停止容器
docker-compose -f docker-compose.yml --compatibility stop
```
```shell
### 停止容器并删除容器
docker-compose -f docker-compose.yml --compatibility down
```

```常用命令支持
http://localhost:8081/commands
http://localhost:8082/commands
http://localhost:8083/commands
```

0

评论区