version: '3.1'

services:
  reproxy:
    image: umputun/reproxy:master
    container_name: reproxy
    hostname: reproxy
    ports:
      - "80:8080"
      - 8081
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./web:/web
    environment:
      - TZ=America/Chicago
      - LISTEN=0.0.0.0:8080
      - DOCKER_ENABLED=true
      - DOCKER_AUTO=true
      - ASSETS_LOCATION=/web
      - DEBUG=true
      - MGMT_ENABLED=true

  # automatic destination, will be mapped for ^/api/svc1/(.*)
  svc1:
    image: ghcr.io/umputun/echo-http
    hostname: svc1
    container_name: svc1
    command: --message="hello world from svc1"


  # automatic destination, will be mapped for ^/api/svc2/(.*)
  svc2:
    image: ghcr.io/umputun/echo-http
    hostname: svc2
    container_name: svc2
    command: --message="hello world from svc2"

  # explicit destination, routing match defined by lables
  whoami:
    image: 'containous/whoami'
    hostname: whoami
    container_name: whoami
    labels:
      reproxy.server: '*'
      reproxy.route: '^/whoami/(.*)'
      reproxy.dest: '/$$1'

  prometheus:
    image: prom/prometheus:v2.26.0
    container_name: prometheus
    volumes:
      - ./prometheus/:/etc/prometheus/
      - 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'
    ports:
      - 9090:9090

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "3000:3000"
    volumes:
      - grafana-storage:/var/lib/grafana

volumes:
  prometheus_data:
  grafana-storage:
