version: '3'

# Extends the default docker-compose.yml with Prometheus/Grafana monitoring configuration
# Usage: docker-compose -f ./docker-compose.yml -f ./docker-compose-prometheus.yml up
services:

  dataflow-server:
    environment:
      - MANAGEMENT_METRICS_EXPORT_PROMETHEUS_ENABLED=true
      - MANAGEMENT_METRICS_EXPORT_PROMETHEUS_RSOCKET_ENABLED=true
      - MANAGEMENT_METRICS_EXPORT_PROMETHEUS_RSOCKET_HOST=prometheus-rsocket-proxy
      - MANAGEMENT_METRICS_EXPORT_PROMETHEUS_RSOCKET_PORT=7001
      #- SPRING_APPLICATION_JSON={"spring.jpa.properties.hibernate.generate_statistics":true}
      - SPRING_CLOUD_DATAFLOW_METRICS_DASHBOARD_URL=http://localhost:3000

  skipper-server:
    environment:
      - MANAGEMENT_METRICS_EXPORT_PROMETHEUS_ENABLED=true
      - MANAGEMENT_METRICS_EXPORT_PROMETHEUS_RSOCKET_ENABLED=true
      - MANAGEMENT_METRICS_EXPORT_PROMETHEUS_RSOCKET_HOST=prometheus-rsocket-proxy
      - MANAGEMENT_METRICS_EXPORT_PROMETHEUS_RSOCKET_PORT=7001
      #- SPRING_APPLICATION_JSON={"spring.jpa.properties.hibernate.generate_statistics":true}

  prometheus-rsocket-proxy:
    image: micrometermetrics/prometheus-rsocket-proxy:1.0.0
    container_name: prometheus-rsocket-proxy
    expose:
      - '9096'
      - '7001'
      - '8086'
    ports:
      - '9096:9096'
      - '7001:7001'
      - '8086:8086'
    environment:
      - server.port=9096
      - micrometer.prometheus-proxy.websocket-port=8086
      - micrometer.prometheus-proxy.tcp-port=7001

  grafana:
    image: springcloud/spring-cloud-dataflow-grafana-prometheus:${DATAFLOW_VERSION:-2.8.4}
    container_name: grafana
    ports:
      - '3000:3000'

  prometheus:
    image: springcloud/spring-cloud-dataflow-prometheus-local:${DATAFLOW_VERSION:-2.8.4}
    container_name: prometheus
    ports:
      - '9090:9090'