name: zyel-trace-lab
services:
  app:
    build:
      context: ../..
      dockerfile: src/observability/Dockerfile
    environment:
      LAB_CONTAINER: "1"
    ports: ["127.0.0.1:4201:4201"]
    cap_drop: [ALL]
    security_opt: [no-new-privileges:true]
    networks: [lab]
  prometheus:
    image: prom/prometheus:v3.15.1@sha256:fa3302279710be2f21a8301ec17a8b4f2301fd829bd113839b3b6b02b6f191a2
    command: ["--config.file=/etc/prometheus/prometheus.yml", "--storage.tsdb.retention.time=2h"]
    volumes: ["./prometheus.yml:/etc/prometheus/prometheus.yml:ro"]
    ports: ["127.0.0.1:9097:9090"]
    cap_drop: [ALL]
    security_opt: [no-new-privileges:true]
    networks: [lab]
  grafana:
    image: grafana/grafana:13.3.0@sha256:488984b716c0862639f91a698adbe2862677a5a07bad42da5f03f3030883b205
    environment:
      GF_AUTH_ANONYMOUS_ENABLED: "true"
      GF_AUTH_ANONYMOUS_ORG_ROLE: Viewer
      GF_SECURITY_ADMIN_USER: labadmin
      GF_SECURITY_ADMIN_PASSWORD: PUBLIC-LOCAL-LAB-ONLY
      GF_ANALYTICS_REPORTING_ENABLED: "false"
      GF_ANALYTICS_CHECK_FOR_UPDATES: "false"
    volumes:
      - ./datasource.yml:/etc/grafana/provisioning/datasources/lab.yml:ro
      - ./dashboard-provider.yml:/etc/grafana/provisioning/dashboards/lab.yml:ro
      - ./dashboard.json:/var/lib/grafana/dashboards/lab.json:ro
    ports: ["127.0.0.1:3007:3000"]
    cap_drop: [ALL]
    security_opt: [no-new-privileges:true]
    networks: [lab]
networks:
  lab:
    internal: true
