# 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: "2.2"
services:
  druid-openldap:
    extends:
      file: docker-compose.base.yml
      service: druid-openldap
    env_file:
      - ./environment-configs/common-ldap

  druid-zookeeper-kafka:
    extends:
      file: docker-compose.base.yml
      service: druid-zookeeper-kafka
    env_file:
      - ./environment-configs/common-ldap
    depends_on:
      - druid-openldap

  druid-metadata-storage:
    extends:
      file: docker-compose.base.yml
      service: druid-metadata-storage
    env_file:
      - ./environment-configs/common-ldap
    environment:
      - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
    depends_on:
      - druid-openldap
      - druid-zookeeper-kafka

  druid-coordinator:
    extends:
      file: docker-compose.base.yml
      service: druid-coordinator
    env_file:
      - ./environment-configs/common-ldap
      - ./environment-configs/coordinator
    environment:
      - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
    depends_on:
      - druid-openldap
      - druid-metadata-storage
      - druid-zookeeper-kafka

  druid-overlord:
    extends:
      file: docker-compose.base.yml
      service: druid-overlord
    env_file:
      - ./environment-configs/common-ldap
      - ./environment-configs/overlord
    environment:
      - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
    depends_on:
      - druid-openldap
      - druid-coordinator
      - druid-metadata-storage
      - druid-zookeeper-kafka

  druid-historical:
    extends:
      file: docker-compose.base.yml
      service: druid-historical
    env_file:
      - ./environment-configs/common-ldap
      - ./environment-configs/historical
    environment:
      - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
    depends_on:
      - druid-openldap
      - druid-zookeeper-kafka

  druid-middlemanager:
    extends:
      file: docker-compose.base.yml
      service: druid-middlemanager
    env_file:
      - ./environment-configs/common-ldap
      - ./environment-configs/middlemanager
    environment:
      - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
    depends_on:
      - druid-openldap
      - druid-zookeeper-kafka
      - druid-overlord

  druid-broker:
    extends:
      file: docker-compose.base.yml
      service: druid-broker
    env_file:
      - ./environment-configs/common-ldap
      - ./environment-configs/broker
    environment:
      - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
    depends_on:
      - druid-openldap
      - druid-coordinator
      - druid-zookeeper-kafka
      - druid-middlemanager
      - druid-historical

  druid-router:
    extends:
      file: docker-compose.base.yml
      service: druid-router
    env_file:
      - ./environment-configs/common-ldap
      - ./environment-configs/router
    environment:
      - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
    depends_on:
      - druid-openldap
      - druid-zookeeper-kafka
      - druid-coordinator
      - druid-broker
      - druid-overlord