version: '3.8' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:${ES_VERSION:-7.17.23} container_name: ${CONTAINER_NAME}_elasticsearch environment: - discovery.type=single-node - "ES_JAVA_OPTS=-Xms${ES_HEAP_SIZE:-2g} -Xmx${ES_HEAP_SIZE:-2g}" - xpack.security.enabled=true - xpack.security.authc.api_key.enabled=true - ELASTIC_PASSWORD=${ELASTIC_PASSWORD:-${KIBANA_PASSWORD:-changeme}} - xpack.monitoring.enabled=false - cluster.routing.allocation.disk.threshold_enabled=false volumes: - elasticsearch_data:/usr/share/elasticsearch/data ports: - "127.0.0.1:9200:9200" networks: - elk restart: unless-stopped ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 logstash: image: docker.elastic.co/logstash/logstash:${LS_VERSION:-7.17.23} container_name: ${CONTAINER_NAME}_logstash environment: - "LS_JAVA_OPTS=-Xms${LS_HEAP_SIZE:-1g} -Xmx${LS_HEAP_SIZE:-1g}" - "xpack.monitoring.enabled=false" - ELASTIC_PASSWORD=${ELASTIC_PASSWORD:-${KIBANA_PASSWORD:-changeme}} command: logstash -f /usr/share/logstash/config/logstash.conf volumes: - ${CONFIG_PATH}:/usr/share/logstash/config:ro - logstash_data:/usr/share/logstash/data ports: - "${LOGSTASH_BEATS_PORT:-5044}:5044" - "${LOGSTASH_SYSLOG_PORT:-514}:514/tcp" - "${LOGSTASH_SYSLOG_PORT:-514}:514/udp" networks: - elk depends_on: - elasticsearch restart: unless-stopped kibana: image: docker.elastic.co/kibana/kibana:${KIBANA_VERSION:-7.17.23} container_name: ${CONTAINER_NAME}_kibana environment: - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 - ELASTICSEARCH_USERNAME=elastic - ELASTICSEARCH_PASSWORD=${ELASTIC_PASSWORD:-${KIBANA_PASSWORD:-changeme}} - XPACK_SECURITY_ENABLED=true - NODE_OPTIONS=--openssl-legacy-provider - SERVER_PUBLICBASEURL=${SERVER_PUBLICBASEURL:-http://localhost:5601} volumes: - kibana_data:/usr/share/kibana/data ports: - "${KIBANA_PORT:-5601}:5601" networks: - elk depends_on: - elasticsearch restart: unless-stopped networks: elk: driver: bridge volumes: elasticsearch_data: name: ${CONTAINER_NAME}_elasticsearch_data logstash_data: name: ${CONTAINER_NAME}_logstash_data kibana_data: name: ${CONTAINER_NAME}_kibana_data