web-dev-qa-db-fra.com

docker-compose.yml pour elasticsearch 7.0.1 et kibana 7.0.1

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?

9
RickyTad

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

25
vivekyad4v