version: "3.5" services: hserver: image: hstreamdb/hstream:latest depends_on: - zookeeper - hstore ports: - "127.0.0.1:6570:6570" expose: - 6570 networks: - hstream-quickstart volumes: - /var/run/docker.sock:/var/run/docker.sock - /tmp:/tmp - data_store:/data/store command: - bash - "-c" - | set -e /usr/local/script/wait-for-storage.sh hstore 6440 zookeeper 2181 600 \ /usr/local/bin/hstream-server \ --bind-address 0.0.0.0 --port 6570 \ --internal-port 6571 \ --server-id 100 \ --seed-nodes "$$(hostname -I | awk '{print $$1}'):6571" \ --advertised-address $$(hostname -I | awk '{print $$1}') \ --metastore-uri zk://zookeeper:2181 \ --store-config /data/store/logdevice.conf \ --store-admin-host hstore --store-admin-port 6440 \ --store-log-level warning \ --io-tasks-path /tmp/io/tasks \ --io-tasks-network hstream-quickstart hstore: image: hstreamdb/hstream:latest networks: - hstream-quickstart volumes: - data_store:/data/store command: - bash - "-c" - | set -ex # N.B. "enable-dscp-reflection=false" is required for linux kernel which # doesn't support dscp reflection, e.g. centos7. /usr/local/bin/ld-dev-cluster --root /data/store \ --use-tcp --tcp-host $$(hostname -I | awk '{print $$1}') \ --user-admin-port 6440 \ --param enable-dscp-reflection=false \ --no-interactive zookeeper: image: zookeeper:3.7 expose: - 2181 networks: - hstream-quickstart volumes: - data_zk_data:/data - data_zk_datalog:/datalog hserver-init: image: hstreamdb/hstream depends_on: - hserver networks: - hstream-quickstart command: - bash - "-c" - | timeout=60 until ( \ /usr/local/bin/hadmin server --host hserver --port 6570 status \ ) >/dev/null 2>&1; do >&2 echo 'Waiting for servers ...' sleep 1 timeout=$$((timeout - 1)) [ $$timeout -le 0 ] && echo 'Timeout!' && exit 1; done; \ /usr/local/bin/hadmin server --host hserver --port 6570 init hstream-exporter: depends_on: hserver-init: condition: service_completed_successfully image: hstreamdb/hstream-exporter networks: - hstream-quickstart command: - bash - "-c" - | set -ex hstream-exporter --addr hstream://hserver:6570 gen_prometheus_config: image: prom/prometheus entrypoint: - sh - "-c" - | echo ' global: scrape_interval: 15s evaluation_interval: 15s external_labels: monitor: "hstream-monitor" scrape_configs: - job_name: "hstream_metrics" scrape_interval: 5s static_configs: - targets: - hstream-exporter:9200 ' > /prometheus/prometheus.yml volumes: - data_prom_config:/prometheus prometheus: image: prom/prometheus depends_on: gen_prometheus_config: condition: service_completed_successfully expose: - 9090 networks: - hstream-quickstart ports: - "9090:9090" volumes: - data_prom_config:/etc/prometheus console: image: hstreamdb/hstream-console depends_on: hserver-init: condition: service_completed_successfully expose: - 5177 networks: - hstream-quickstart environment: - SERVER_PORT=5177 - PROMETHEUS_URL=http://prometheus:9090 - HSTREAM_PRIVATE_ADDRESS=hserver:6570 ports: - "127.0.0.1:5177:5177" networks: hstream-quickstart: name: hstream-quickstart volumes: data_store: name: quickstart_data_store data_zk_data: name: quickstart_data_zk_data data_zk_datalog: name: quickstart_data_zk_datalog data_prom_config: name: quickstart_data_prom_config