version: "3.7"

volumes:
  grafana:
  prometheus:

x-log-config: &log-config
  logging:
    driver: json-file
    options:
      max-size: "50m"
      max-file: "20"

services:
  prometheus:
    image: prom/prometheus:v2.36.0
    command:
      - --config.file=/etc/prometheus/config.yaml
      - --storage.tsdb.path=/prometheus
      - --storage.tsdb.retention.time=360d
    container_name: wownerod_prometheus
    restart: unless-stopped
    ports:
      - 127.0.0.1:9090:9090
    volumes:
      - prometheus:/prometheus
      - ./files/prometheus/config.yaml:/etc/prometheus/config.yaml:ro
    <<: *log-config
  grafana:
    user: "1000"
    command:
      - -config=/etc/grafana/grafana.ini
    container_name: wownerod_grafana
    restart: unless-stopped
    image: grafana/grafana:8.5.4
    ports:
      - 127.0.0.1:3000:3000
    volumes:
      - grafana:/var/lib/grafana
      - ./files/grafana/grafana.ini:/etc/grafana/grafana.ini:ro
      - ./files/grafana/provisioning:/etc/grafana/provisioning:ro
      - ./files/grafana/dashboards:/var/lib/grafana/dashboards:ro
    environment:
      HOSTNAME: grafana
      GF_SERVER_ROOT_URL: ${GRAFANA_URL}
      GF_ANALYTICS_REPORTING_ENABLED: "false"
      GF_ANALYTICS_CHECK_FOR_UPDATES: "false"
      GF_USERS_ALLOW_SIGN_UP: "false"
      GF_USERS_ALLOW_ORG_CREATE: "false"
      GF_LOG_LEVEL: "debug"
      GF_AUTH_ANONYMOUS_ENABLED: "${GF_AUTH_ANONYMOUS_ENABLED:-true}"
      GF_AUTH_BASIC_ENABLED: "${GF_AUTH_BASIC_ENABLED:-false}"
      GF_AUTH_DISABLE_LOGIN_FORM: "${GF_AUTH_DISABLE_LOGIN_FORM:-true}"
      GF_SECURITY_ADMIN_PASSWORD: "${GF_SECURITY_ADMIN_PASSWORD}"
      GF_SECURITY_ADMIN_USER: "${GF_SECURITY_ADMIN_USER}"
    <<: *log-config
  exporter:
    command:
      - --monero-addr=http://wownerod:34570
    container_name: wownerod_exporter
    restart: unless-stopped
    ports:
      - 127.0.0.1:9000:9000
    build:
      context: dockerfiles
      dockerfile: wownerod_exporter
    <<: *log-config
  wownerod:
    container_name: wownerod_daemon
    build:
      context: dockerfiles
      dockerfile: wownerod_nocompile
    restart: unless-stopped
    volumes:
      - ./data:/data
    command:
      wownerod --data-dir=/data --rpc-bind-ip=0.0.0.0 --rpc-restricted-bind-ip=0.0.0.0 --confirm-external-bind --non-interactive --public-node --rpc-restricted-bind-port=34568 --rpc-bind-port=34570 --log-level=0
    ports:
      - 0.0.0.0:34567:34567
      - 0.0.0.0:34568:34568
      - 127.0.0.1:34570:34570
    <<: *log-config
