services:
  # Prometheus for metrics collection
  prometheus:
    image: docker.io/prom/prometheus:latest
    container_name: skillmeat-prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./docker/prometheus.yml:/etc/prometheus/prometheus.yml:ro
      - prometheus-data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/usr/share/prometheus/console_libraries'
      - '--web.console.templates=/usr/share/prometheus/consoles'
      - '--web.enable-lifecycle'
    networks:
      - skillmeat-observability
    restart: unless-stopped

  # Grafana for visualization
  grafana:
    image: docker.io/grafana/grafana:latest
    container_name: skillmeat-grafana
    ports:
      - "3001:3000"
    volumes:
      - grafana-data:/var/lib/grafana
      - ./docker/grafana-datasources.yml:/etc/grafana/provisioning/datasources/datasources.yml:ro
      - ./docker/grafana-dashboards.yml:/etc/grafana/provisioning/dashboards/dashboards.yml:ro
      - ./docker/grafana-dashboard.json:/var/lib/grafana/dashboards/skillmeat.json:ro
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=admin
      - GF_USERS_ALLOW_SIGN_UP=false
      - GF_SERVER_ROOT_URL=http://localhost:3001
      - GF_ANALYTICS_REPORTING_ENABLED=false
      - GF_ANALYTICS_CHECK_FOR_UPDATES=false
    networks:
      - skillmeat-observability
    depends_on:
      - prometheus
    restart: unless-stopped

  # Loki for log aggregation (optional)
  loki:
    image: docker.io/grafana/loki:latest
    container_name: skillmeat-loki
    ports:
      - "3100:3100"
    volumes:
      - ./docker/loki-config.yml:/etc/loki/local-config.yaml:ro
      - loki-data:/loki
    command: -config.file=/etc/loki/local-config.yaml
    networks:
      - skillmeat-observability
    restart: unless-stopped

  # Promtail for shipping logs to Loki (optional)
  promtail:
    image: docker.io/grafana/promtail:latest
    container_name: skillmeat-promtail
    volumes:
      - ./docker/promtail-config.yml:/etc/promtail/config.yml:ro
      - /var/log:/var/log:ro
    command: -config.file=/etc/promtail/config.yml
    networks:
      - skillmeat-observability
    depends_on:
      - loki
    restart: unless-stopped

volumes:
  prometheus-data:
    driver: local
  grafana-data:
    driver: local
  loki-data:
    driver: local

networks:
  skillmeat-observability:
    driver: bridge
