version: "3.8" services: prometheus: image: prom/prometheus:latest container_name: prometheus restart: unless-stopped volumes: - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml - ./prometheus/alert.rules.yml:/etc/prometheus/alert.rules.yml - prometheus-data:/prometheus command: - "--config.file=/etc/prometheus/prometheus.yml" - "--storage.tsdb.path=/prometheus" - "--web.enable-lifecycle" ports: - "9090:9090" networks: - monitoring-net environment: - TZ=Asia/Seoul alertmanager: image: prom/alertmanager:latest container_name: alertmanager restart: unless-stopped volumes: - ./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml - alertmanager-data:/alertmanager command: - "--config.file=/etc/alertmanager/alertmanager.yml" ports: - "9093:9093" networks: - monitoring-net environment: - TZ=Asia/Seoul loki: image: grafana/loki:2.9.0 container_name: loki restart: unless-stopped volumes: - ./loki/loki-config.yml:/etc/loki/config.yml - loki-data:/loki command: - "-config.file=/etc/loki/config.yml" ports: - "3100:3100" networks: - monitoring-net environment: - TZ=Asia/Seoul grafana: image: grafana/grafana:latest container_name: grafana restart: unless-stopped depends_on: - prometheus - loki ports: - "3000:3000" networks: - monitoring-net environment: - TZ=Asia/Seoul - GF_SECURITY_ADMIN_USER=admin - GF_SECURITY_ADMIN_PASSWORD=admin1234 volumes: - grafana-data:/var/lib/grafana volumes: prometheus-data: alertmanager-data: loki-data: grafana-data: networks: monitoring-net: driver: bridge