services:
  # Grafana
  grafana:
    extends:
      file: ../../.config/docker-compose-base.yaml
      service: grafana
    volumes:
      - ../..:/grafana-zabbix
      - ../dashboards:/devenv/dashboards
      - '../datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml'
      - '../dashboards.yaml:/etc/grafana/provisioning/dashboards/dashboards.yaml'

  # Zabbix
  zabbix-server:
    image: zabbix/zabbix-server-pgsql:alpine-7.2-latest@sha256:5c1aeceb24d6a07b64667a97d42053e3421c207aec39aca86d87980a30b01f5b
    ports:
      - '10051:10051'
    depends_on:
      - database
    environment:
      DB_SERVER_HOST: database
      DB_SERVER_PORT: 5432
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: zabbix
      POSTGRES_DB: zabbix
      ZBX_TIMEOUT: 10
      ZBX_STARTPOLLERS: 10
      ZBX_STARTPOLLERSUNREACHABLE: 5
      ZBX_DEBUGLEVEL: 3

  zabbix-web:
    image: zabbix/zabbix-web-apache-pgsql:alpine-7.2-latest@sha256:70a301e5c25b9db11bde09ec5b1ba5c25480c3c63e70f01d51534d9648627ff6
    ports:
      - '8188:8080'
    depends_on:
      - database
      - zabbix-server
    environment:
      ZBX_SERVER_HOST: zabbix-server
      ZBX_SERVER_PORT: 10051
      DB_SERVER_HOST: database
      DB_SERVER_PORT: 5432
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: zabbix
      POSTGRES_DB: zabbix

  database:
    image: postgres:18@sha256:5773fe724c49c42a7a9ca70202e11e1dff21fb7235b335a73f39297d200b73a2
    ports:
      - '15432:5432'
    command: postgres -c 'max_connections=1000'
    environment:
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: zabbix

  zabbix-agent:
    image: zabbix/zabbix-agent:alpine-7.2-latest@sha256:0bb96e2afe24c71dcd38e16f9dff6e56b4aebadff5267ce354b39a79f4a07255
    environment:
      ZBX_SERVER_HOST: zabbix-server
      ZBX_SERVER_PORT: 10051

  #########################################################
  # Bootstrap config
  #########################################################

  bootstrap:
    build: ./bootstrap
    environment:
      ZBX_API_URL: http://zabbix-web:8080
      ZBX_API_USER: Admin
      ZBX_API_PASSWORD: zabbix
    depends_on:
      - database
      - zabbix-server
      - zabbix-web

  #########################################################
  # Fake agents
  #########################################################

  # backend
  redis_backend:
    image: redis:alpine@sha256:6cbef353e480a8a6e7f10ec545f13d7d3fa85a212cdcc5ffaf5a1c818b9d3798

  zas_backend_01:
    build: ../zas-agent
    volumes:
      - ../zas-agent/conf/zas_scenario_backend.cfg:/etc/zas_scenario.cfg
    environment:
      REDIS_HOST: redis_backend
    # restart: always

  zas_backend_02:
    build: ../zas-agent
    volumes:
      - ../zas-agent/conf/zas_scenario_backend.cfg:/etc/zas_scenario.cfg
    environment:
      REDIS_HOST: redis_backend

  # frontend
  redis_frontend:
    image: redis:alpine@sha256:6cbef353e480a8a6e7f10ec545f13d7d3fa85a212cdcc5ffaf5a1c818b9d3798

  zas_frontend_01:
    build: ../zas-agent
    volumes:
      - ../zas-agent/conf/zas_scenario_frontend.cfg:/etc/zas_scenario.cfg
    environment:
      REDIS_HOST: redis_frontend

  zas_frontend_02:
    build: ../zas-agent
    volumes:
      - ../zas-agent/conf/zas_scenario_frontend.cfg:/etc/zas_scenario.cfg
    environment:
      REDIS_HOST: redis_frontend
