#
# Copyright (C) 2015-2019 Uber Technologies, Inc. (streaming-data@uber.com)
#
# Licensed 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:
  devenv:
    build: devenv/.
    ports:
    - "2181:2181"
    - "9093:9093"
    - "9094:9094"
    healthcheck:
      test: ["CMD", "./prepare-devenv.sh", "devenv", "5"]
      interval: 5s
      timeout: 10s
      retries: 10
  manager:
    image: ureplicator
    build: .
    ports:
    - "8100:8100"
    command: "manager \
       -config example/example-cluster.properties \
       -srcClusters cluster1 \
       -destClusters cluster2 \
       -deployment ureplicator-example \
       -env deployment \
       -enableRebalance true \
       -zookeeper devenv:2181/ureplicator-example \
       -managerPort 8100 \
       -initMaxNumWorkersPerRoute 5 \
       -maxNumWorkersPerRoute 10
       "
    restart: always
    links:
    - devenv
    environment:
    - WAIT_FOR_HOST=devenv:2181
    healthcheck:
      test: ["CMD", "./wait-for-it.sh", "manager:8100", "60"]
      interval: 5s
      timeout: 10s
      retries: 5
  controller:
    image: ureplicator
    ports:
    - "9000:9000"
    command: "controller \
          -config example/example-cluster.properties \
          -enableFederated true \
          -deploymentName ureplicator-example \
          -srcClusters cluster1 \
          -destClusters cluster2 \
          -helixClusterName ureplicator \
          -mode customized \
          -zookeeper devenv:2181/ureplicator-example \
          -port 9000 \
          -instanceId 1 \
          -hostname controller \
          -offsetRefreshIntervalInSec 0 \
          -enableAutoWhitelist false
          "
    environment:
    - WAIT_FOR_HOST=manager:8100
    restart: always
    links:
    - devenv
    - manager
  worker_1:
    image: ureplicator
    command:  "worker \
        -consumer_config example/example-consumer.properties \
        -producer_config example/example-producer.properties \
        -federated_enabled true \
        -helix_config example/example-helix-3.properties \
        -topic_partition_count_observer true \
        -cluster_config example/example-cluster.properties"
    environment:
    - WAIT_FOR_HOST=manager:8100
    links:
    - devenv
    - manager
    - controller
  worker_2:
    image: ureplicator
    command:  "worker \
        -consumer_config example/example-consumer.properties \
        -producer_config example/example-producer.properties \
        -federated_enabled true \
        -helix_config example/example-helix-4.properties \
        -topic_partition_count_observer true \
        -cluster_config example/example-cluster.properties"
    environment:
    - WAIT_FOR_HOST=manager:8100
    restart: always
    links:
    - devenv
    - manager
    - controller

