Einfaches Elasticsearch-Setup mit docker-compose

English Deutsch

Die folgende docker-compose.yml ist ein einfacher Ausgangspunkt für die Verwendung von ElasticSearch in einem Docker-basierten Setup:

docker-compose-elasticsearch.yml
services:
    elasticsearch1:
        image: docker.elastic.co/elasticsearch/elasticsearch:7.13.4
        container_name: elasticsearch1
        environment:
            - cluster.name=docker-cluster
            - node.name=elasticsearch1
            - cluster.initial_master_nodes=elasticsearch1
            - bootstrap.memory_lock=true
            - http.cors.allow-origin=http://localhost:1358,http://127.0.0.1:1358
            - http.cors.enabled=true
            - http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization
            - http.cors.allow-credentials=true
            - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        ulimits:
            memlock:
                soft: -1
                hard: -1
        volumes:
            - ./esdata1:/usr/share/elasticsearch/data
        ports:
            - 9200:9200
    dejavu:
        image: appbaseio/dejavu
        container_name: dejavu
        ports:
            - 1358:1358

Nun das Verzeichnis esdata1 mit den korrekten Berechtigungen erstellen:

create_esdata_dir.sh
sudo mkdir esdata1
sudo chown -R 1000:1000 esdata1

Außerdem muss der vm.max_map_count-sysctl-Parameter konfiguriert werden:

set_vm_max_map_count.sh
echo -e "\nvm.max_map_count=524288\n" | sudo tee -a /etc/sysctl.conf && sudo sysctl -w vm.max_map_count=524288

Empfohlen wird, es in /opt/elasticsearch zu platzieren, aber es kann überall platziert werden.

Für den Autostart beim Booten siehe systemd-Service für ein docker-compose-Projekt in 10 Sekunden erstellen oder einfach diesen Snippet aus dem genannten Beitrag verwenden:

create_docker_compose_service.sh
curl -fsSL https://techoverflow.net/scripts/create-docker-compose-service.sh | sudo bash /dev/stdin

Dies erstellt einen systemd-Service namens elasticsearch (wenn das Verzeichnis wie /opt/elasticsearch benannt ist) und aktiviert und startet ihn sofort. Daher kann er neu gestartet werden mit

restart_elasticsearch.sh
sudo systemctl restart elasticsearch

und die Logs anzeigen mit

journalctl_elasticsearch.sh
sudo journalctl -xfu elasticsearch

Für ein komplexeres Setup mit mehr als einem Knoten siehe unseren vorherigen Beitrag ElasticSearch docker-compose.yml- und systemd-Service-Generator


Check out similar posts by category: Container, Databases, Docker, ElasticSearch