services: zoo1: image: registry.cn-chengdu.aliyuncs.com/reghao/zookeeper:3.8.4 # 生产环境建议锁定具体版本 restart: always hostname: zoo1 container_name: zoo1 ports: - "2181:2181" volumes: - ./data/zoo1/data:/data - ./data/zoo1/datalog:/datalog environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 # 限制 JVM 内存,通常设为容器限制的 70-80% JVMFLAGS: "-Xms512m -Xmx512m" deploy: resources: limits: cpus: '1.0' memory: 1G reservations: cpus: '0.5' memory: 512M healthcheck: test: ["CMD-SHELL", "echo ruok | nc localhost 2181 | grep imok"] interval: 10s timeout: 5s retries: 3 zoo2: image: registry.cn-chengdu.aliyuncs.com/reghao/zookeeper:3.8.4 restart: always hostname: zoo2 container_name: zoo2 ports: - "2182:2181" volumes: - ./data/zoo2/data:/data - ./data/zoo2/datalog:/datalog environment: ZOO_MY_ID: 2 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 JVMFLAGS: "-Xms512m -Xmx512m" deploy: resources: limits: cpus: '1.0' memory: 1G healthcheck: test: ["CMD-SHELL", "echo ruok | nc localhost 2181 | grep imok"] interval: 10s timeout: 5s retries: 3 zoo3: image: registry.cn-chengdu.aliyuncs.com/reghao/zookeeper:3.8.4 restart: always hostname: zoo3 container_name: zoo3 ports: - "2183:2181" volumes: - ./data/zoo3/data:/data - ./data/zoo3/datalog:/datalog environment: ZOO_MY_ID: 3 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 JVMFLAGS: "-Xms512m -Xmx512m" deploy: resources: limits: cpus: '1.0' memory: 1G healthcheck: test: ["CMD-SHELL", "echo ruok | nc localhost 2181 | grep imok"] interval: 10s timeout: 5s retries: 3