################################################################################
#  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: '3'
services:
  postgresql:
    image: postgres
    ports:
      - "5432:5432"
    container_name: beampostgresql
    volumes:
      - beam-postgresql-data:/var/lib/postgresql/data
      - ./postgres:/docker-entrypoint-initdb.d
    environment:
      - POSTGRES_USER=admin
      - POSTGRES_PASSWORD=<PGPasswordHere>
      - POSTGRES_DB=beam_metrics
  influxdb:
    image: influxdb:1.8.0
    ports:
      - "8086:8086"
      - "8088:8088"
    expose:
      - 8086
    container_name: influxdb
    volumes:
      - beam-influxdb-storage:/var/lib/influxdb
    environment:
      - INFLUXDB_BIND_ADDRESS=:8088
  influxdb-restore:
    build: ./influxdb
    depends_on:
      - influxdb
    container_name: restore-backup
    entrypoint: "sh"
    command: ["-c", "./wait-for-it.sh influxdb:8086 -t 60 && \
              influxd restore -portable -host influxdb:8088 /backup"]
  grafana:
    image: beamgrafana
    build: ./grafana
    ports:
      - "3000:3000"
    container_name: beamgrafana
    volumes:
      - beam-grafana-libdata:/var/lib/grafana
      - beam-grafana-etcdata:/etc/grafana
      - beam-grafana-logdata:/var/log/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=<GrafanaPasswordHere>
      - GF_AUTH_ANONYMOUS_ENABLED=true
      - GF_AUTH_ANONYMOUS_ORG_NAME=Beam
      - PSQL_DB_HOST=beampostgresql
      - PSQL_DB_PORT=5432
      - PSQL_DB_DBNAME=beam_metrics
      - PSQL_DB_DBUSERNAME=admin
      - PSQL_DB_DBPWD=<PGPasswordHere>
      - INFLUX_DB_HOST=influxdb
      - INFLUX_DB_PORT=8086
      - INFLUX_DB_DBNAME=beam_test_metrics
  syncgithub:
    image: syncgithub
    container_name: beamsyncgithub
    build:
      context: ./sync/github
      dockerfile: Dockerfile
    environment:
      - DB_HOST=beampostgresql
      - DB_PORT=5432
      - DB_DBNAME=beam_metrics
      - DB_DBUSERNAME=admin
      - DB_DBPWD=<PGPasswordHere>
      - GH_ACCESS_TOKEN=<GithubAccessToken>
  syncjenkins:
    image: syncjenkins
    container_name: beamsyncjenkins
    build:
      context: ./sync/jenkins
      dockerfile: Dockerfile
    environment:
      - DB_HOST=beampostgresql
      - DB_PORT=5432
      - DB_DBNAME=beam_metrics
      - DB_DBUSERNAME=admin
      - DB_DBPWD=<PGPasswordHere>
  syncjira:
    image: syncjira
    container_name: beamsyncjira
    build:
      context: ./sync/jira
      dockerfile: Dockerfile
    environment:
      - DB_HOST=beampostgresql
      - DB_PORT=5432
      - DB_DBNAME=beam_metrics
      - DB_DBUSERNAME=admin
      - DB_DBPWD=<PGPasswordHere>
volumes:
  beam-postgresql-data:
  beam-grafana-libdata:
  beam-grafana-etcdata:
  beam-grafana-logdata:
  beam-influxdb-storage:
