name: esdiag
services:
esdiag-webui:
container_name: esdiag
image: ${ESDIAG_IMAGE_TAG:-esdiag:latest}
depends_on:
esdiag-elasticsearch:
condition: service_healthy
esdiag-kibana:
condition: service_healthy
environment:
ESDIAG_OUTPUT_URL: http://esdiag-elasticsearch:9200
ESDIAG_OUTPUT_APIKEY: ${ESDIAG_OUTPUT_APIKEY}
ESDIAG_KIBANA_URL: ${ESDIAG_KIBANA_URL}/s/${ESDIAG_KIBANA_SPACE}
LOG_LEVEL: info
command: ["serve"]
networks:
- net
ports:
- 2501:2501
esdiag-elasticsearch:
container_name: esdiag-elasticsearch
image: ${ELASTIC_CONTAINER_REGISTRY}/elasticsearch/elasticsearch:${ELASTIC_VERSION}
environment:
- cluster.name=esdiag-cluster
- node.name=esdiag-node
- discovery.type=single-node
- xpack.security.enabled=true
- ELASTIC_PASSWORD=${ELASTIC_PASSWORD}
- xpack.security.http.ssl.enabled=false
- xpack.ml.use_auto_machine_memory_percent=true
- ES_JAVA_OPTS=-Xms${ELASTICSEARCH_HEAP_INIT} -Xmx${ELASTICSEARCH_HEAP_MAX}
- "_JAVA_OPTIONS=-XX:UseSVE=0"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data:/usr/share/elasticsearch/data
networks:
- net
ports:
- 9200:9200
healthcheck:
test:
[
"CMD-SHELL",
"curl --output /dev/null --silent --head --fail -u elastic:${ELASTIC_PASSWORD} http://esdiag-elasticsearch:9200",
]
interval: 10s
timeout: 10s
retries: 30
esdiag-kibana-setup:
depends_on:
esdiag-elasticsearch:
condition: service_healthy
image: ${ELASTIC_CONTAINER_REGISTRY}/elasticsearch/elasticsearch:${ELASTIC_VERSION}
container_name: esdiag-kibana-setup
restart: "no"
networks:
- net
command: >
bash -c '
echo "Setup the kibana_system password";
start_time=$$(date +%s);
timeout=60;
until curl -s -u "elastic:${ELASTIC_PASSWORD}" -X POST http://esdiag-elasticsearch:9200/_security/user/kibana_system/_password -d "{\"password\":\"${KIBANA_SYSTEM_PASSWORD}\"}" -H "Content-Type: application/json" | grep -q "^{}"; do
if [ $$(($$(date +%s) - $$start_time)) -ge $$timeout ]; then
echo "Error: Elasticsearch timeout";
exit 1;
fi;
sleep 2;
done;
'
esdiag-kibana:
container_name: esdiag-kibana
image: ${ELASTIC_CONTAINER_REGISTRY}/kibana/kibana:${ELASTIC_VERSION}
depends_on:
esdiag-kibana-setup:
condition: service_completed_successfully
environment:
- SERVER_NAME=kibana
- ELASTICSEARCH_HOSTS=http://esdiag-elasticsearch:9200
- ELASTICSEARCH_USERNAME=kibana_system
- ELASTICSEARCH_PASSWORD=${KIBANA_SYSTEM_PASSWORD}
- XPACK_ENCRYPTEDSAVEDOBJECTS_ENCRYPTIONKEY=${KIBANA_ENCRYPTION_KEY}
- ELASTICSEARCH_PUBLICBASEURL=${ESDIAG_OUTPUT_URL}
volumes:
- data:/usr/share/kibana/data
networks:
- net
ports:
- 5601:5601
healthcheck:
test:
[
"CMD-SHELL",
"curl -s -I http://esdiag-kibana:5601 | grep -q 'HTTP/1.1 302 Found'",
]
interval: 10s
timeout: 10s
retries: 30
volumes:
data:
driver: local
networks:
net:
driver: bridge