Ce wiki introduit un déploiement d'elasticsearch en environnement de développement. La documentation officielle pour déployer le service en production est disponible ici.
Récupérer l'image officielle:
docker pull elasticsearch:7.10.1
Création d'un conteneur exécutant un seul noeud
$ docker run -d --name elastic--net labinfo -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.10.1
Le serveur écoute sur le port 9200, si on fait un GET à l'aide de cURL, le serveur retourne son statut:
curl -XGET http://localhost:9200 { "name" : "0bb59254b378", "cluster_name" : "docker-cluster", "cluster_uuid" : "cIHCGqSIQWOPgjwxfQBySQ", "version" : { "number" : "7.10.1", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "1c34507e66d7db1211f66f3513706fdf548736aa", "build_date" : "2020-12-05T01:00:33.671820Z", "build_snapshot" : false, "lucene_version" : "8.7.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
Pour que les données introduites dans elasticsearch puissent être enregistrées indépendament du conteneur d'application ( qui peut être supprimé et reconstruit après reparamétrage ou changement de version), il va falloir créer un volume. Le plus simple pour créer un service et conserver les données est d'utiliser docker-compose
version: "3.3" networks: # Nomme explicitement le réseau par défaut utilisé par les services définis dans ce fichier vnet: volumes: data01: driver: local services: esdb: image: elasticsearch:7.16.2 environment: - node.name=es01 - discovery.type=single-node ports: - 9200:9200 networks: - vnet volumes: - data01:/usr/share/elasticsearch/data
Pour un déploiement en production, 3 nodes doivent exister pour que les shards puissent être répliqués.
source: https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docker.html#docker-compose-file