################################################################################
#  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
  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
      - DB_HOST=beampostgresql
      - DB_PORT=5432
      - DB_DBNAME=beam_metrics
      - DB_DBUSERNAME=admin
      - DB_DBPWD=<PGPasswordHere>
  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>
  prometheus:
    image: prom/prometheus
    ports:
      - 9090:9090
    container_name: prometheus
    volumes:
      - ./prometheus/prometheus/config:/etc/prometheus:ro
      - prometheus-storage:/prometheus
    command:
      - --config.file=/etc/prometheus/prometheus.yml
      - --web.console.libraries=/etc/prometheus/console_libraries
      - --web.console.templates=/etc/prometheus/consoles
      - --storage.tsdb.path=/prometheus
      - --storage.tsdb.retention.time=365d
  pushgateway:
    image: prom/pushgateway
    container_name: pushgateway
    ports:
      - 9091:9091
  alertmanager:
    image: prom/alertmanager
    container_name: alertmanager
    ports:
      - 9093:9093
    volumes:
      - ./prometheus/alertmanager/config:/etc/alertmanager:ro
volumes:
  beam-postgresql-data:
  beam-grafana-libdata:
  beam-grafana-etcdata:
  beam-grafana-logdata:
  prometheus-storage:
