ElasticSearch & Kibana con docker

En otras entradas [1], [2], [3], hemos hablado de ElasticSearch, sobre todo orientado al desarrollo, sin embargo queremos hacer esta entrada para reflejar de forma sencilla cómo instalar ElasticSearch y Kibana usando docker.

La instalación la realizaremos usando docker-compose. Docker Compose es una herramienta que permite simplificar el uso de Docker. A partir de archivos YAML permite crear contendores, conectarlos, habilitar puertos, volúmenes, etc. En la entrada anterior, hablamos de Portainer, te recomiendo lo mires, pues complementa y permite gestionar las imágenes de docker.

Para poner en funcionamiento vamos a crear un archivo llamado docker-compose.yml, y dentro colocarle el siguiente contenido. Lo puedes descargar también desde este repositorio GitHub.

Como requisito previo debes tener instalado docker-compose, en esta guía se explica de forma sencilla en dependencia de la plataforma que uses.

También debes crear un volumen para la persistencia externa para almacenar los datos de ElasticSearch, esto permitirá que cuando reinicies los datos no se pierdan y queden persistentes.

$ sudo docker volume create elasticsearch-data
version: '3'
services:
  elasticsearch:
    container_name: elasticsearch
    image: elasticsearch:7.6.2
    ports:
        - 9200:9200
        - 9300:9300
    environment:
        - 'ES_JAVA_OPTS=-Xms2048m -Xmx2048m'
        - 'discovery.type=single-node'
    volumes:
        - elasticsearch-data:/usr/share/elasticsearch/data/
  kibana:
    image: docker.elastic.co/kibana/kibana:7.6.2
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch
    environment:
      - 'ELASTICSEARCH_HOSTS=http://elasticsearch:9200'
volumes:
  elasticsearch-data:
    external: true  

Copia el archivo docker-compose.yml en una carpeta y ejecuta el comando.

 docker-compose up -d 

Para verificar que todo está funcionando correctamente, puedes verificar por http en los puertos 9200 (elasticsearch) y 5601 (kibana).

Puedes profundizar más en este vídeo.

Espero te resulte útil esta entrada.