services: grafana: image: grafana/grafana:11.6.0 container_name: prometheus-grafana restart: unless-stopped env_file: - .env environment: GF_SECURITY_ADMIN_USER: ${GRAFANA_ADMIN_USER:-admin} GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_ADMIN_PASSWORD:?grafana admin password required} volumes: - grafana-data:/var/lib/grafana labels: - "traefik.enable=true" - "traefik.http.services.prometheus-grafana.loadbalancer.server.port=3000" # Prod Router - "traefik.http.routers.grafana.rule=Host(`grafana.forust.xyz`)" - "traefik.http.routers.grafana.entrypoints=websecure" - "traefik.http.routers.grafana.tls=true" # Local Router - "traefik.http.routers.grafana-local.rule=Host(`grafana.workstation.internal`)" - "traefik.http.routers.grafana-local.entrypoints=websecure" - "traefik.http.routers.grafana-local.tls=true" # Dev Router - "traefik.http.routers.grafana-dev.rule=Host(`grafana.gigaforust.internal`)" - "traefik.http.routers.grafana-dev.entrypoints=websecure" - "traefik.http.routers.grafana-dev.tls=true" networks: - proxy prometheus: image: prom/prometheus:v3.2.1 container_name: prometheus-prometheus restart: unless-stopped command: - "--config.file=/etc/prometheus/prometheus.yaml" - "--storage.tsdb.path=/prometheus" - "--storage.tsdb.retention.time=90d" volumes: - prometheus-data:/prometheus - ./prometheus.yaml:/etc/prometheus/prometheus.yaml:ro networks: - proxy alertmanager: image: prom/alertmanager:v0.28.1 container_name: prometheus-alertmanager restart: unless-stopped command: - "--config.file=/etc/alertmanager/alertmanager.yaml" - "--storage.path=/alertmanager" volumes: - alertmanager-data:/alertmanager - ./alertmanager.yaml:/etc/alertmanager/alertmanager.yaml:ro networks: - proxy volumes: grafana-data: prometheus-data: alertmanager-data: networks: proxy: external: true