version: '3.8' services: prometheus: image: prom/prometheus:latest container_name: wm-prometheus ports: - "9090:9090" volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml - ./alert_rules.yml:/etc/prometheus/alert_rules.yml - 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' - '--storage.tsdb.retention.time=200h' - '--web.enable-lifecycle' networks: - monitoring grafana: image: grafana/grafana:latest container_name: wm-grafana ports: - "3000:3000" environment: GF_SECURITY_ADMIN_PASSWORD: admin123 GF_USERS_ALLOW_SIGN_UP: false volumes: - grafana_data:/var/lib/grafana - ./grafana/datasources.yml:/etc/grafana/provisioning/datasources/datasources.yml depends_on: - prometheus networks: - monitoring alertmanager: image: prom/alertmanager:latest container_name: wm-alertmanager ports: - "9093:9093" volumes: - ./alertmanager.yml:/etc/alertmanager/alertmanager.yml command: - '--config.file=/etc/alertmanager/alertmanager.yml' - '--storage.path=/alertmanager' networks: - monitoring volumes: prometheus_data: grafana_data: networks: monitoring: driver: bridge