################################################################################
#  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.1'
services:
  jobmanager:
    image: apache/flink-table-walkthrough:1-FLINK-1.14-scala_2.12
    build: .
    hostname: "jobmanager"
    expose:
      - "6123"
    ports:
      - "8082:8081"
    command: standalone-job
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager
    depends_on:
      - kafka
      - mysql
  taskmanager:
    image: apache/flink-table-walkthrough:1-FLINK-1.14-scala_2.12
    build: .
    expose:
      - "6121"
      - "6122"
    depends_on:
      - jobmanager
    command: taskmanager
    links:
      - jobmanager:jobmanager
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager
  zookeeper:
    image: wurstmeister/zookeeper:3.4.6
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka:2.13-2.8.1
    ports:
      - "9092:9092"
    depends_on:
      - zookeeper
    environment:
      KAFKA_ADVERTISED_HOST_NAME: "kafka"
      KAFKA_ADVERTISED_PORT: "9092"
      HOSTNAME_COMMAND: "route -n | awk '/UG[ \t]/{print $$2}'"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_CREATE_TOPICS: "kafka:1:1"
  data-generator:
      image: apache/data-generator:1
      build: ../docker/data-generator
      depends_on:
        - kafka
  mysql:
    image: mysql:8.0.19
    command: --default-authentication-plugin=mysql_native_password --secure_file_priv=/data
    environment:
      MYSQL_USER: "sql-demo"
      MYSQL_PASSWORD: "demo-sql"
      MYSQL_DATABASE: "sql-demo"
      MYSQL_RANDOM_ROOT_PASSWORD: "yes"
    volumes:
      - ../docker/mysql-spend-report-init:/docker-entrypoint-initdb.d
      - ./data:/data
  grafana:
    image: grafana/grafana:7.5.8
    ports:
      - "3000:3000"
    depends_on:
      - mysql
    volumes:
      - ../docker/grafana-spend-report-init/provisioning/:/etc/grafana/provisioning/
      - ../docker/grafana-spend-report-init/dashboard.json:/etc/grafana/dashboard.json
      - ../docker/grafana-spend-report-init/grafana.ini:/etc/grafana/grafana.ini
