# Copyright 2021 Xoriant Corporation
#
# 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:
  smo-influxdb:
        container_name: smo-influxdb
        image: influxdb:1.8.5
        ports:
             - 8086:8086
        networks:
             - smo-net
  smo-grafana:
        container_name: smo-grafana
        image: grafana/grafana:7.5.11
        ports:
             - 3000:3000
        networks:
             - smo-net
        depends_on:
             - smo-influxdb
             - smo-influxdb-connector
  agent-zookeeper:
        container_name: agent-zookeeper
        image: confluentinc/cp-zookeeper:5.5.6
        networks:
             - agent-net
        environment:
             ZOOKEEPER_CLIENT_PORT: 2181
             ZOOKEEPER_TICK_TIME: 2000
  agent-kafka:
         container_name: agent-kafka
         image: confluentinc/cp-kafka:5.5.6
         networks:
             - agent-net
         depends_on:
             - agent-zookeeper
         ports:
             - 9092:9092
         environment:
              KAFKA_BROKER_ID: 1
              KAFKA_ZOOKEEPER_CONNECT: agent-zookeeper:2181
              KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://agent-kafka:9092,PLAINTEXT_HOST://localhost:19092
              KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
              KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
              KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
  smo-zookeeper:
        container_name: smo-zookeeper
        image: confluentinc/cp-zookeeper:5.5.6
        networks:
             - smo-net
        environment:
             ZOOKEEPER_CLIENT_PORT: 22181
             ZOOKEEPER_TICK_TIME: 2000
  smo-kafka:
         container_name: smo-kafka
         image: confluentinc/cp-kafka:5.5.6
         networks:
             - smo-net
         depends_on:
             - smo-zookeeper
         ports:
             - 29092:29092
         environment:
              KAFKA_BROKER_ID: 2
              KAFKA_ZOOKEEPER_CONNECT: smo-zookeeper:22181
              KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://smo-kafka:29092,PLAINTEXT_HOST://localhost:39092
              KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
              KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
              KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
  agent-kafdrop:
         container_name: agent-kafdrop
         image: obsidiandynamics/kafdrop:3.27.0
         networks:
             - agent-net
         depends_on:
             - agent-kafka
         ports:
             - 9000:9000
         environment:
                 KAFKA_BROKERCONNECT: agent-kafka:9092
  smo-kafdrop:
         container_name: smo-kafdrop
         image: obsidiandynamics/kafdrop:3.27.0
         networks:
             - smo-net
         depends_on:
             - smo-kafka
         ports:
             - 29000:9000
         environment:
                 KAFKA_BROKERCONNECT: smo-kafka:29092
  smo-collector:
         container_name: smo-collector
         build: ./collector
         image: smo-collector
         networks:
             - agent-net
             - smo-net
         ports:
             - 9999:9999
         volumes:
             - ~/ves-certificate:/opt/ves/certs
         environment:
                 ves_influxdb_host: "smo-influxdb"
                 ves_influxdb_port: "8086"
                 ves_grafana_host: "smo-grafana"
                 ves_grafana_port: "3000"
                 data_storage: "elasticsearch"
                 elasticsearch_domain: "smo-elasticsearch"
                 kafka_host_2: "smo-kafka"
                 kafka_port_2: "29092"
                 kafka_topic: "smo-events"
                 ves_host: "smo-collector"
                 ves_port: "9999"
                 ves_grafana_auth: "admin:admin"
                 ves_user: "user"
                 ves_pass: "password"
                 ves_path: ""
                 ves_topic: "events"
                 ves_loglevel: "ERROR"
         depends_on:
             - smo-kafka
  smo-influxdb-connector:
         container_name: smo-influxdb-connector
         build: ./influxdb-connector
         image: smo-influxdb-connector
         networks:
             - smo-net
         ports:
             - 9990:9990
         environment:
                 ves_influxdb_host: "smo-influxdb"
                 ves_influxdb_port: "8086"
                 ves_loglevel: "ERROR"
                 kafka_host_2: "smo-kafka"
                 kafka_port_2: "29092"
         depends_on:
             - smo-kafka
             - smo-influxdb
  agent:
          container_name: agent
          build: ./agent
          image: agent
          networks:
             - agent-net
          restart: always
          environment:
                  ves_kafka_host: "agent-kafka"
                  ves_kafka_hostname: "agent-kafka"
                  ves_host: "smo-collector"
                  ves_port: "9999"
                  ves_path: ""
                  ves_topic: "events"
                  ves_https: "True"
                  ves_user: "user"
                  ves_pass: "password"
                  ves_interval: "10"
                  ves_kafka_port: "9092"
                  ves_mode: "./yaml/host"
                  ves_version: "5"
                  ves_loglevel: "ERROR"
          depends_on:
             - agent-kafka
             - smo-collector
  smo-dmaap-adapter:
         container_name: smo-dmaap-adapter
         build: ./dmaapadapter
         image: smo-dmaap-adapter
         networks:
             - smo-net
         ports:
             - 5000:5000
         environment:
             kafka_host: "smo-kafka"
             kafka_port: "29092"
             log_level: "DEBUG"
  smo-elasticsearch:
           image: docker.elastic.co/elasticsearch/elasticsearch:7.11.1
           container_name: smo-elasticsearch
           restart: always
           environment:
                  discovery.type: "single-node"
                  ES_JAVA_OPTS: "-Xms1024m -Xmx1024m"
           ports:
                   - 9200:9200
                   - 9300:9300
           networks:
                   - smo-net
  smo-post-config:
         container_name: smo-post-config
         build: ./postconfig
         image: smo-post-config
         environment:
             ves_influxdb_host: "smo-influxdb"
             ves_influxdb_port: "8086"
             ves_grafana_host: "smo-grafana"
             ves_grafana_port: "3000"
             ves_grafana_auth: "admin:admin"
         depends_on:
             - smo-grafana
         networks:
             - smo-net

networks:
        agent-net:
                driver: bridge
                name: agent-net
        smo-net:
                driver: bridge
                name: smo-net
