#
# 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.
#

version: '3'
services:
  zookeeper:
    image: zookeeper:latest
    hostname: zookeeper
    ports:
      - "2181:2181"
    environment:
      ZOO_MY_ID: 1
      ZOO_PORT: 2181
      ZOO_SERVERS: server.1=zookeeper:2888:3888;2181
    volumes:
      - ./pinot-docker-demo/zookeeper/data:/data
      - ./pinot-docker-demo/zookeeper/datalog:/datalog
  kafka:
    image: confluentinc/cp-kafka:5.3.0
    hostname: kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka:19092,LISTENER_DOCKER_EXTERNAL://kafka:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL
      KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181/kafka"
      KAFKA_BROKER_ID: 1
      KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    volumes:
      - ./pinot-docker-demo/kafka/data:/var/lib/kafka/data
    depends_on:
      - zookeeper
  pinot-controller:
    image: apachepinot/pinot:release-0.7.1
    hostname: pinot-controller
    volumes:
      - ./pinot-docker-demo/pinot/controller:/tmp/data/controller
    ports:
      - "9000:9000"
    command: StartController -zkAddress zookeeper:2181
    depends_on:
      - kafka
  pinot-broker:
    image: apachepinot/pinot:release-0.7.1
    hostname: pinot-broker
    ports:
      - "8099:8099"
    command: StartBroker -zkAddress zookeeper:2181
    depends_on:
      - zookeeper
      - kafka
      - pinot-controller
  pinot-server:
    image: apachepinot/pinot:release-0.7.1
    hostname: pinot-server
    volumes:
      - ./pinot-docker-demo/pinot/server:/tmp/data/server
    ports:
      - "8098:8098"
    command: StartServer -zkAddress zookeeper:2181
    depends_on:
      - zookeeper
      - kafka
      - pinot-controller
