services:
  grafana:
    image: ghcr.io/volkovlabs/app:latest
    entrypoint: /run.sh
    ports:
      - 3000:3000/tcp
    environment:
      - GF_DEFAULT_APP_MODE=development
      - GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH=/etc/grafana/provisioning/dashboards/panels.json
      - GF_INSTALL_PLUGINS=volkovlabs-rss-datasource,marcusolsson-static-datasource,yesoreyeram-infinity-datasource,frser-sqlite-datasource
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=testpass
    volumes:
      - ./dist:/var/lib/grafana/plugins/volkovlabs-text-panel
      - ./static/provisioning:/etc/grafana/provisioning
      - ./tmp:/var/lib/grafana/tmp
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://localhost:3000/api/health && curl -s http://localhost:3000/login | grep -q 'Grafana' || exit 1"]
      interval: 15s
      timeout: 10s
      retries: 12
      start_period: 120s
    profiles:
      - dev
      - e2e

  grafana-main:
    image: grafana/grafana:main
    ports:
      - 3000:3000/tcp
    environment:
      - GF_DEFAULT_APP_MODE=development
      - GF_USERS_DEFAULT_THEME=light
      - GF_INSTALL_PLUGINS=marcusolsson-static-datasource,volkovlabs-rss-datasource,yesoreyeram-infinity-datasource,frser-sqlite-datasource
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=testpass
    volumes:
      - ./dist:/var/lib/grafana/plugins/volkovlabs-text-panel
      - ./static/provisioning:/etc/grafana/provisioning
      - ./tmp:/var/lib/grafana/tmp
    profiles:
      - main

  grafana-dep:
    image: grafana/grafana:11.0.0
    ports:
      - 3000:3000/tcp
    environment:
      - GF_DEFAULT_APP_MODE=development
      - GF_USERS_DEFAULT_THEME=light
      - GF_INSTALL_PLUGINS=volkovlabs-rss-datasource,marcusolsson-static-datasource,yesoreyeram-infinity-datasource,frser-sqlite-datasource
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=testpass
    volumes:
      - ./dist:/var/lib/grafana/plugins/volkovlabs-text-panel
      - ./static/provisioning:/etc/grafana/provisioning
      - ./tmp:/var/lib/grafana/tmp
    profiles:
      - dependency

  test:
    build:
      context: .
      dockerfile: test/Dockerfile
    depends_on:
      grafana:
        condition: service_healthy
    environment:
      - GRAFANA_URL=http://grafana:3000
    volumes:
      - ./test:/home/pwuser/test
      - ./dist:/home/pwuser/dist
    profiles:
      - e2e
