#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

---
# Source: apache-bookkeeper-docker-compose/templates/docker-compose.yml
version: '3'

services:
  zookeeper-0:
    image: apachebookkeeper/bookkeeper-current:latest
    hostname: zookeeper-0
    command: ["zookeeper"]
    ports:
      - "9080:8080"
      - "2181:2181"
    volumes:
      - ./data/zookeeper-0/data:/data/zookeeper/data
      - ./data/zookeeper-0/txlog:/data/zookeeper/txlog
    environment:
      - ZK_dataDir=/data/zookeeper/data
      - ZK_dataLogDir=/data/zookeeper/txlog
      - ZK_clientPort=2181
      - ZK_ID=0
      - ZK_SERVERS=server.0=zookeeper-0:2888:3888:participant;0.0.0.0:2181 server.1=zookeeper-1:2888:3888:participant;0.0.0.0:2181 server.2=zookeeper-2:2888:3888:participant;0.0.0.0:2181
      - ZK_standaloneEnabled=false
    healthcheck:
      test: ["CMD", "curl", "-s", "http://localhost:8080/commands/stat"]
      interval: 60s
      timeout: 3s
      retries: 60
    restart: on-failure
  
  zookeeper-1:
    image: apachebookkeeper/bookkeeper-current:latest
    hostname: zookeeper-1
    command: ["zookeeper"]
    ports:
      - "9081:8080"
      - "2182:2181"
    volumes:
      - ./data/zookeeper-1/data:/data/zookeeper/data
      - ./data/zookeeper-1/txlog:/data/zookeeper/txlog
    environment:
      - ZK_dataDir=/data/zookeeper/data
      - ZK_dataLogDir=/data/zookeeper/txlog
      - ZK_clientPort=2181
      - ZK_ID=1
      - ZK_SERVERS=server.0=zookeeper-0:2888:3888:participant;0.0.0.0:2181 server.1=zookeeper-1:2888:3888:participant;0.0.0.0:2181 server.2=zookeeper-2:2888:3888:participant;0.0.0.0:2181
      - ZK_standaloneEnabled=false
    healthcheck:
      test: ["CMD", "curl", "-s", "http://localhost:8080/commands/stat"]
      interval: 60s
      timeout: 3s
      retries: 60
    restart: on-failure
  
  zookeeper-2:
    image: apachebookkeeper/bookkeeper-current:latest
    hostname: zookeeper-2
    command: ["zookeeper"]
    ports:
      - "9082:8080"
      - "2183:2181"
    volumes:
      - ./data/zookeeper-2/data:/data/zookeeper/data
      - ./data/zookeeper-2/txlog:/data/zookeeper/txlog
    environment:
      - ZK_dataDir=/data/zookeeper/data
      - ZK_dataLogDir=/data/zookeeper/txlog
      - ZK_clientPort=2181
      - ZK_ID=2
      - ZK_SERVERS=server.0=zookeeper-0:2888:3888:participant;0.0.0.0:2181 server.1=zookeeper-1:2888:3888:participant;0.0.0.0:2181 server.2=zookeeper-2:2888:3888:participant;0.0.0.0:2181
      - ZK_standaloneEnabled=false
    healthcheck:
      test: ["CMD", "curl", "-s", "http://localhost:8080/commands/stat"]
      interval: 60s
      timeout: 3s
      retries: 60
    restart: on-failure
  
  bookie-0:
    image: apachebookkeeper/bookkeeper-current:latest
    hostname: bookie-0
    ports:
      - "3181:3181"
      - "8080:8080"
      - "4181:4181"
    volumes:
      - ./data/bookie-0/journal:/data/bookkeeper/journal
      - ./data/bookie-0/ledgers:/data/bookkeeper/ledgers
    environment:
      - BK_zkServers=zookeeper-0:2181,zookeeper-1:2181,zookeeper-2:2181
      - BK_zkLedgersRootPath=/ledgers
      - BK_metadataServiceUri=zk://zookeeper-0:2181;zookeeper-1:2181;zookeeper-2:2181/ledgers
      - BK_DATA_DIR=/data/bookkeeper
      - BK_advertisedAddress=127.0.0.1
      - BK_bookiePort=3181
      - BK_httpServerEnabled=true
    depends_on:
      - "zookeeper-0"
      - "zookeeper-1"
      - "zookeeper-2"
    healthcheck:
      test: ["CMD", "curl", "-s", "http://localhost:8080/heartbeat"]
      interval: 60s
      timeout: 3s
      retries: 60
    restart: on-failure
  
  bookie-1:
    image: apachebookkeeper/bookkeeper-current:latest
    hostname: bookie-1
    ports:
      - "3182:3182"
      - "8081:8080"
      - "4182:4181"
    volumes:
      - ./data/bookie-1/journal:/data/bookkeeper/journal
      - ./data/bookie-1/ledgers:/data/bookkeeper/ledgers
    environment:
      - BK_zkServers=zookeeper-0:2181,zookeeper-1:2181,zookeeper-2:2181
      - BK_zkLedgersRootPath=/ledgers
      - BK_metadataServiceUri=zk://zookeeper-0:2181;zookeeper-1:2181;zookeeper-2:2181/ledgers
      - BK_DATA_DIR=/data/bookkeeper
      - BK_advertisedAddress=127.0.0.1
      - BK_bookiePort=3182
      - BK_httpServerEnabled=true
    depends_on:
      - "zookeeper-0"
      - "zookeeper-1"
      - "zookeeper-2"
    healthcheck:
      test: ["CMD", "curl", "-s", "http://localhost:8080/heartbeat"]
      interval: 60s
      timeout: 3s
      retries: 60
    restart: on-failure
  
  bookie-2:
    image: apachebookkeeper/bookkeeper-current:latest
    hostname: bookie-2
    ports:
      - "3183:3183"
      - "8082:8080"
      - "4183:4181"
    volumes:
      - ./data/bookie-2/journal:/data/bookkeeper/journal
      - ./data/bookie-2/ledgers:/data/bookkeeper/ledgers
    environment:
      - BK_zkServers=zookeeper-0:2181,zookeeper-1:2181,zookeeper-2:2181
      - BK_zkLedgersRootPath=/ledgers
      - BK_metadataServiceUri=zk://zookeeper-0:2181;zookeeper-1:2181;zookeeper-2:2181/ledgers
      - BK_DATA_DIR=/data/bookkeeper
      - BK_advertisedAddress=127.0.0.1
      - BK_bookiePort=3183
      - BK_httpServerEnabled=true
    depends_on:
      - "zookeeper-0"
      - "zookeeper-1"
      - "zookeeper-2"
    healthcheck:
      test: ["CMD", "curl", "-s", "http://localhost:8080/heartbeat"]
      interval: 60s
      timeout: 3s
      retries: 60
    restart: on-failure
  

