version: "3.8"

services:

  prometheus:
    image: prom/prometheus:v2.47.2
    command:
      - "--config.file=/etc/prometheus/prometheus.yml"
      - "--storage.tsdb.path=/var/lib/prometheus"
      - "--web.console.libraries=/usr/share/prometheus/console_libraries"
      - "--web.console.templates=/usr/share/prometheus/consoles"
      - "--web.external-url=http://127.0.0.1:9090"
      - "--storage.tsdb.retention.time=1y"
      - "--web.enable-lifecycle"
    ports:
      - "9090:9090"
    volumes:
      - ./data/prometheus/etc:/etc/prometheus
      - ./data/prometheus/var:/var/lib/prometheus
    restart: unless-stopped

  alertmanager:
    image: prom/alertmanager:v0.26.0
    command:
      - "--config.file=/etc/alertmanager/alertmanager.yml"
      - "--storage.path=/var/lib/alertmanager"
      - "--web.external-url=http://127.0.0.1:9093"
    ports:
      - "9093:9093"
    volumes:
      - ./data/alertmanager/etc:/etc/alertmanager
      - ./data/alertmanager/var:/var/lib/alertmanager
    restart: unless-stopped

  graphite:
    image: prom/graphite-exporter:v0.14.0
    command:
      - "--graphite.mapping-config=/etc/prometheus/graphite-mapping.yaml"
      - "--graphite.mapping-strict-match"
    ports:
      - "9108:9108"
      - "9109:9109"
      - "9109:9109/udp"
    volumes:
      - ./data/prometheus/etc:/etc/prometheus
    restart: unless-stopped
