J'utilise Docker Desktop avec des conteneurs Linux sur Windows 10 et je voudrais lancer les dernières versions des conteneurs elasticsearch et kibana sur un fichier de composition Docker.
Tout fonctionne bien lorsque vous utilisez une ancienne version comme 6.2.4.
Il s'agit du fichier docker-compose.yml de travail pour 6.2.4.
version: '3.1'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
container_name: elasticsearch
ports:
- "9200:9200"
volumes:
- elasticsearch-data:/usr/share/elasticsearch/data
networks:
- docker-network
kibana:
image: docker.elastic.co/kibana/kibana:6.2.4
container_name: kibana
ports:
- "5601:5601"
depends_on:
- elasticsearch
networks:
- docker-network
networks:
docker-network:
driver: bridge
volumes:
elasticsearch-data:
J'ai supprimé tous les conteneurs docker installés et adapté le fichier docker-compose.yml en changeant 6.2.4 en 7.0.1. En démarrant le nouveau fichier de composition, tout va bien, les conteneurs elasticsearch et kibana sont démarrés. Mais après quelques secondes, le conteneur elasticsearch se ferme (le conteneur kibana continue de fonctionner). J'ai tout redémarré, attaché un terminal au conteneur elasticsearch et vu le message d'erreur suivant:
...
ERROR: [1] bootstrap checks failed
[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
...
Que faut-il changer dans le fichier docker-compose.yml pour faire fonctionner elasticsearch 7.0.1?
Faire quelques changements a fonctionné pour moi -
Ajouter cluster.initial_master_nodes
au service elasticsearch de compose -
environment:
- cluster.initial_master_nodes=elasticsearch
vm.max_map_count
sur le paramètre du noyau de la boîte Linux doit être défini sur au moins 262144 -
$ Sudo sysctl -w vm.max_map_count=262144
Pour le mode de développement, vous pouvez également utiliser les paramètres ci-dessous -
environment:
- discovery.type=single-node
Fichier de composition de travail pour moi -
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.0.1
container_name: es01
environment:
- cluster.initial_master_nodes=es01
ulimits:
memlock:
soft: -1
hard: -1
ports:
- 9200
Pour le mode de production, vous devez envisager d'avoir plusieurs nœuds/conteneurs ES comme suggéré dans la documentation officielle
https://www.elastic.co/guide/en/elasticsearch/reference/7.0/docker.html#docker-cli-run-prod-mode