# Prometheus + Grafana Monitoring Stack - LIVE DEPLOYMENT # ============================================================================= # This is the actual running compose at /home/homelab/docker/monitoring/ # Deployed directly with docker compose, NOT via Portainer. # # Config files are bind-mounted from the same directory: # ./prometheus/prometheus.yml - scrape config + alerting rules reference # ./prometheus/alert-rules.yml - alerting rules # ./grafana/provisioning/ - datasources + dashboard provisioning # # To redeploy: docker compose -f this file up -d (from /home/homelab/docker/monitoring/) # To reload Prometheus config without restart: curl -X POST http://localhost:9090/-/reload # # See monitoring.yaml for the self-contained Portainer GitOps version (embedded configs). # ============================================================================= version: "3.8" services: prometheus: image: prom/prometheus:latest container_name: prometheus volumes: - ./prometheus:/etc/prometheus - prometheus-data:/prometheus command: - "--config.file=/etc/prometheus/prometheus.yml" - "--storage.tsdb.path=/prometheus" - "--web.enable-lifecycle" ports: - "9090:9090" restart: unless-stopped grafana: image: grafana/grafana-oss:latest container_name: grafana environment: - GF_SECURITY_ADMIN_USER=admin - GF_SECURITY_ADMIN_PASSWORD="REDACTED_PASSWORD" volumes: - grafana-data:/var/lib/grafana - ./grafana/provisioning/datasources:/etc/grafana/provisioning/datasources - ./grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards - ./grafana/dashboards:/var/lib/grafana/dashboards ports: - "3300:3000" restart: unless-stopped node_exporter: image: prom/node-exporter:latest container_name: node_exporter network_mode: host pid: host volumes: - /:/host:ro,rslave - /sys:/host/sys:ro - /proc:/host/proc:ro command: - '--path.rootfs=/host' restart: unless-stopped volumes: prometheus-data: grafana-data: