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

services:
  jobmanager:
    image: apache/flink-table-walkthrough:1-FLINK-1.16-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.16-scala_2.12
    build: .
    expose:
      - "6121"
      - "6122"
    depends_on:
      - jobmanager
    command: taskmanager
    links:
      - jobmanager:jobmanager
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager
  kafka:
    image: 'bitnami/kafka:3.9.0'
    environment:
      - KAFKA_CFG_NODE_ID=0
      - KAFKA_CFG_PROCESS_ROLES=controller,broker
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093
      - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
  data-generator:
      image: apache/data-generator:1
      build: ../docker/data-generator
      depends_on:
        - kafka
  mysql:
    image: mysql:8.0.31
    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
