Kibana and logstash can't run using docker-compose

hi ,hello everyone
I run the elastic and logstash and kibana and mysql containers using docker-compose
this the configuration that i use in my docker-compose file
version: '3'
services:
mysql:
container_name: mysql
hostname: mysql
image: 'mysql'
restart: always
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mydb
MYSQL_USER: root
MYSQL_PASSWORD: root
build: ./mysql
volumes:
- mysql_data:/var/lib/mysql
networks:
- elastic
setup:
image: docker.elastic.co/elasticsearch/elasticsearch:8.7.0
volumes:
- certs:/usr/share/elasticsearch/config/certs
user: "0"
command: >
bash -c '
if [ x${ELASTIC_PASSWORD} == x ]; then
echo "Set the ELASTIC_PASSWORD environment variable in the .env file";
exit 1;
elif [ x${KIBANA_PASSWORD} == x ]; then
echo "Set the KIBANA_PASSWORD environment variable in the .env file";
exit 1;
fi;
if [ ! -f config/certs/ca.zip ]; then
echo "Creating CA";
bin/elasticsearch-certutil ca --silent --pem -out config/certs/ca.zip;
unzip config/certs/ca.zip -d config/certs;
fi;
if [ ! -f config/certs/certs.zip ]; then
echo "Creating certs";
echo -ne
"instances:\n"
" - name: es01\n"
" dns:\n"
" - es01\n"
" - localhost\n"
" ip:\n"
" - 127.0.0.1\n"
config/certs/instances.yml;
bin/elasticsearch-certutil cert --silent --pem -out config/certs/certs.zip --in config/certs/instances.yml --ca-cert config/certs/ca/ca.crt --ca-key config/certs/ca/ca.key;
unzip config/certs/certs.zip -d config/certs;
fi;
echo "Setting file permissions"
chown -R root:root config/certs;
find . -type d -exec chmod 750 {} ;;
find . -type f -exec chmod 640 {} ;;
echo "Waiting for Elasticsearch availability";
until curl -s --cacert config/certs/ca/ca.crt https://es01:9200 | grep -q "missing authentication credentials"; do sleep 30; done;
echo "Setting kibana_system password";
until curl -s -X POST --cacert config/certs/ca/ca.crt -u "elastic:${ELASTIC_PASSWORD}" -H "Content-Type: application/json" https://es01:9200/_security/user/kibana_system/_password -d "{"password":"${KIBANA_PASSWORD}"}" | grep -q "^{}"; do sleep 10; done;
echo "All done!";
'
healthcheck:
test: ["CMD-SHELL", "[ -f config/certs/es01/es01.crt ]"]
interval: 1s
timeout: 5s
retries: 120

es01:
depends_on:
setup:
condition: service_healthy
image: docker.elastic.co/elasticsearch/elasticsearch:8.7.0
volumes:
- certs:/usr/share/elasticsearch/config/certs
- esdata01:/usr/share/elasticsearch/data
ports:
- ${ES_PORT}:9200
environment:
- node.name=es01
- cluster.name=${CLUSTER_NAME}
- cluster.initial_master_nodes=es01,es02,es03
- discovery.seed_hosts=es02,es03
- ELASTIC_PASSWORD=${ELASTIC_PASSWORD}
- bootstrap.memory_lock=true
- xpack.security.enabled=true
- xpack.security.http.ssl.enabled=true
- xpack.security.http.ssl.key=certs/es01/es01.key
- xpack.security.http.ssl.certificate=certs/es01/es01.crt
- xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt
- xpack.security.transport.ssl.enabled=true
- xpack.security.transport.ssl.key=certs/es01/es01.key
- xpack.security.transport.ssl.certificate=certs/es01/es01.crt
- xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt
- xpack.security.transport.ssl.verification_mode=certificate
- xpack.license.self_generated.type=${LICENSE}
mem_limit: ${MEM_LIMIT}
ulimits:
memlock:
soft: -1
hard: -1
healthcheck:
test:
[
"CMD-SHELL",
"curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep -q 'missing authentication credentials'",
]
interval: 10s
timeout: 10s
retries: 120
kibana:
depends_on:
es01:
condition: service_healthy
image: docker.elastic.co/kibana/kibana:8.7.0
volumes:
- certs:/usr/share/kibana/config/certs
- kibanadata:/usr/share/kibana/data
ports:
- ${KIBANA_PORT}:5601
environment:
- SERVERNAME=kibana
- ELASTICSEARCH_HOSTS=https://es01:9200
- ELASTICSEARCH_USERNAME=kibana_system
- ELASTICSEARCH_PASSWORD=${KIBANA_PASSWORD}
- ELASTICSEARCH_SSL_CERTIFICATEAUTHORITIES=config/certs/ca/ca.crt
mem_limit: ${MEM_LIMIT}
healthcheck:
test:
[
"CMD-SHELL",
"curl -s -I https://localhost:5601 | grep -q 'HTTP/1.1 302 Found'",
]
interval: 10s
timeout: 10s
retries: 120
networks:
- elastic
logstash:
image: docker.elastic.co/logstash/logstash:8.7.0
environment:
- LOGSTASH_JDBC_URL=jdbc:mysql://mysql:3306/mydb?useSSL=false
- LOGSTASH_JDBC_DRIVER=com.mysql.cj.jdbc.Driver
- LOGSTASH_JDBC_DRIVER_JAR_LOCATION=/usr/share/logstash/logstash-core/lib/jars/mysql-connector-java.jar
- LOGSTASH_JDBC_USERNAME=admin
- LOGSTASH_JDBC_PASSWORD=admin
- LOGSTASH_ELASTICSEARCH_HOST=http://elasticsearch:9200
volumes:
- ./mysql-jdbc-input-plugin.conf/:/usr/share/logstash/mysql-jdbc-input-plugin.conf
- ./logstash.conf/:/usr/share/logstash/pipeline/logstash.conf
ports:
- "5000:5000"
- "9600:9600"
depends_on:
- es01
- mysql
networks:
- elastic
volumes:
certs:
driver: local
esdata01:
driver: local
esdata02:
driver: local
esdata03:
driver: local
kibanadata:
driver: local
elasticsearch_data:
mysql_data:
networks:
elastic:
driver: bridge ’’’
and this the script .env : ’’’# Password for the 'elastic' user (at least 6 characters)
ELASTIC_PASSWORD="fatiha"

Password for the 'kibana_system' user (at least 6 characters)

KIBANA_PASSWORD="fatiha"

Version of Elastic products

STACK_VERSION=8.7.0

Set the cluster name

CLUSTER_NAME=docker-cluster

Set to 'basic' or 'trial' to automatically start the 30-day trial

LICENSE=basic
#LICENSE=trial

Port to expose Elasticsearch HTTP API to the host

ES_PORT=9200
#ES_PORT=127.0.0.1:9200

Port to expose Kibana to the host

KIBANA_PORT=5601
#KIBANA_PORT=80

Increase or decrease based on the available host memory (in bytes)

MEM_LIMIT=1073741824

Project namespace (defaults to the current folder name if not set)

#COMPOSE_PROJECT_NAME=myproject ’’’ the kibana run but in the browser display this :
β€˜Kibana server is not ready yet. β€˜

and logstash can't run this is the error : β€˜β€™β€™β€™ Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/run/desktop/mnt/host/c/ELKCompose/logstash.conf" to rootfs at "/usr/share/logstash/pipeline/logstash.conf": mount /run/desktop/mnt/host/c/ELKCompose/logstash.conf:/usr/share/logstash/pipeline/logstash.conf (via /proc/self/fd/9), flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type β€˜β€™β€™β€™

what is the problem ?

Please format your code/logs/config using the </> button, or markdown style back ticks. It helps to make things easy to read which helps us help you :slight_smile:

1 Like

Hey @Fatiha - A blog was just published about this topic. There are code examples in this GitHub repo.

The setup is pretty similar to what you have, except for the MySQL container.

In your scenario, start by checking the logs from the ES01 container. Once you confirm ES01 is up and running, then you can troubleshoot Kibana and Logstash.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.