services: prometheus: image: prom/prometheus:latest container_name: prometheus ports: - "9090:9090" volumes: - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro - ./prometheus/alert_rules.yml:/etc/prometheus/alert_rules.yml:ro - ./prometheus-db:/prometheus user: "1000:1000" restart: unless-stopped alertmanager: image: prom/alertmanager:latest container_name: alertmanager ports: - "9093:9093" volumes: - ./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml:ro - ./alertmanager-db:/alertmanager user: "1000:1000" restart: unless-stopped node-exporter: image: prom/node-exporter:latest container_name: node-exporter pid: host network_mode: host restart: unless-stopped cadvisor: image: ghcr.io/google/cadvisor:latest container_name: cadvisor ports: - "8082:8080" # remapped to avoid conflict volumes: - /:/rootfs:ro - /var/run:/var/run:ro - /sys:/sys:ro - /var/lib/docker:/var/lib/docker:ro command: - --docker_only - --store_container_labels=true environment: - TZ=America/Edmonton restart: unless-stopped grafana: image: grafana/grafana:latest container_name: grafana ports: - "2999:3000" volumes: - ./grafana:/etc/grafana - ./grafana-db:/var/lib/grafana environment: - GF_SECURITY_ADMIN_USER=admin - GF_SECURITY_ADMIN_PASSWORD=changeme user: "1000:1000" restart: unless-stopped