# Kibana and logstash can't run using docker-compose

**URL:** <https://discuss.elastic.co/t/kibana-and-logstash-cant-run-using-docker-compose/333498>\
**Category:** Elasticsearch\
**Tags:** docker\
**Created:** [May 15, 2023, 7:27pm UTC](https://discuss.elastic.co/t/kibana-and-logstash-cant-run-using-docker-compose/333498 "2023-05-15T19:27:42Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Fatiha](https://avatars.discourse-cdn.com/v4/letter/f/bbe5ce/32.png) [@Fatiha](https://discuss.elastic.co/u/Fatiha)\
**Post date:** [May 15, 2023, 7:27pm UTC](https://discuss.elastic.co/t/kibana-and-logstash-cant-run-using-docker-compose/333498/1 "2023-05-15T19:27:42Z")

</div>

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](http://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](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](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](http://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](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](http://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](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](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](http://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](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 ?

---

<div class="post-metadata">

**Author:** ![warkolm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/warkolm/32/39224_2.png) [@warkolm](https://discuss.elastic.co/u/warkolm)\
**Post date:** [May 15, 2023, 9:03pm UTC](https://discuss.elastic.co/t/kibana-and-logstash-cant-run-using-docker-compose/333498/2 "2023-05-15T21:03:58Z")

</div>

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 🙂

---

<div class="post-metadata">

**Author:** ![eMitch](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/emitch/32/93607_2.png) [@eMitch](https://discuss.elastic.co/u/eMitch)\
**Post date:** [May 17, 2023, 5:52pm UTC](https://discuss.elastic.co/t/kibana-and-logstash-cant-run-using-docker-compose/333498/3 "2023-05-17T17:52:13Z")

</div>

Hey @Fatiha - A [blog was just published](https://www.elastic.co/blog/getting-started-with-the-elastic-stack-and-docker-compose) about this topic. There are code examples in [this GitHub repo](https://github.com/elkninja/elastic-stack-docker-part-one).

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.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [June 14, 2023, 5:52pm UTC](https://discuss.elastic.co/t/kibana-and-logstash-cant-run-using-docker-compose/333498/4 "2023-06-14T17:52:58Z")

</div>

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