version: '3.3'
services:
###############################################################################
# elasticsearch
###############################################################################
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
    ports:
      - '$ES_PORT:9200'
    volumes:
      - './data/elasticsearch:/usr/share/elasticsearch/data'
    environment:
      - discovery.type=single-node
###############################################################################
# logstash
###############################################################################
  logstash:
    image: docker.elastic.co/logstash/logstash:6.2.4
    command: -f /logstash/pipeline.conf
    ports:
      - '$LOGSTASH_TCP_PORT:5000/tcp'
      - '$LOGSTASH_UDP_PORT:5001/udp'
    volumes:
      - './config/logstash:/logstash'
    environment:
      # otherwise logstash will keep sending its own logs to itself
      # over and over...
      LOGSPOUT: ignore
    depends_on:
      - elasticsearch
###############################################################################
# kibana
###############################################################################
  kibana:
    image: docker.elastic.co/kibana/kibana:6.2.4
    ports:
      - '$KIBANA_PORT:5601'
    depends_on:
      - logstash
###############################################################################
# cadvisor
###############################################################################
  cadvisor:
    image: google/cadvisor:latest
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
    ports:
      - '$CADVISOR_PORT:8080'