version: '3.7' services: elasticsearch: container_name: elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:${ELK_VERSION} volumes: - type: bind source: ./config/elasticsearch.yml target: /usr/share/elasticsearch/config/elasticsearch.yml read_only: true - type: volume source: elasticsearch target: /usr/share/elasticsearch/data environment: ES_JAVA_OPTS: "-Xmx2g -Xms2g" # Use single node discovery in order to disable production mode and avoid bootstrap checks # see https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html discovery.type: single-node networks: - elk logstash: container_name: logstash image: docker.elastic.co/logstash/logstash:${ELK_VERSION} volumes: - type: bind source: ./config/logstash/logstash.yml target: /usr/share/logstash/config/logstash.yml read_only: true - type: bind source: ./config/logstash/pipeline target: /usr/share/logstash/pipeline read_only: true ports: - "5213:5213/udp" environment: LS_JAVA_OPTS: "-Xmx1g -Xms1g" networks: - elk depends_on: - elasticsearch kibana: container_name: kibana image: docker.elastic.co/kibana/kibana:${ELK_VERSION} volumes: - type: bind source: ./config/kibana.yml target: /usr/share/kibana/config/kibana.yml read_only: true ports: - "5601:5601" networks: - elk depends_on: - elasticsearch networks: elk: driver: bridge volumes: elasticsearch: