Как запуститьasticsearch через docker compose (стек docker) и установить плагин удаления по запросу - PullRequest
0 голосов
/ 24 августа 2018

Постановка проблемы

У меня есть файл docker-compose.yml (v3), который выглядит следующим образом:

version: '3'

services:
    elastic:
        restart: always
        image: elasticsearch:2.3.1
        command: ["sh", "-c", "./bin/plugin install delete-by-query && ./bin/elasticsearch"]
        volumes:
            - /home/styfle/esdata:/usr/share/elasticsearch/data
        ports:
            - 9200:9200
    kibana:
        restart: always
        image: kibana:4.5.4
        ports:
            - 5601:5601
        links:
            - elastic:elasticsearch

Когда я запускаю docker-compose up elastic, кажется, что плагин установлен правильно,но я получаю сообщение «не запускатьasticsearch от имени пользователя root».

Creating dev_elastic_1 ... done
Attaching to dev_elastic_1
elastic_1  | -> Installing delete-by-query...
elastic_1  | Trying https://download.elastic.co/elasticsearch/release/org/elasticsearch/plugin/delete-by-query/2.3.1/delete-by-query-2.3.1.zip ...
elastic_1  | Downloading ..DONE
elastic_1  | Verifying https://download.elastic.co/elasticsearch/release/org/elasticsearch/plugin/delete-by-query/2.3.1/delete-by-query-2.3.1.zip checksums if available ...
elastic_1  | Downloading .DONE
elastic_1  | Installed delete-by-query into /usr/share/elasticsearch/plugins/delete-by-query
elastic_1  | Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.
elastic_1  |    at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:93)
elastic_1  |    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:144)
elastic_1  |    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:270)
elastic_1  |    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)
elastic_1  | Refer to the log for complete error details.
dev_elastic_1 exited with code 74

Вопрос

Как установить плагин и работать как пользователь elasticsearch вместо rootпользователь

1 Ответ

0 голосов
/ 24 августа 2018

В соответствии с архитектурой docker-compose и политиками очистки вы не можете запустить команду docker-compose для запуска подоболочки. Вы можете внести некоторые изменения в bash и docker в текущий файл docker-compose.yml, как показано ниже:

version: '3'

services:
    elastic:
        restart: always
        image: elasticsearch:2.3.1
        user: ${MY_USER_ID}
        command: ["sh", "-c", "./bin/plugin install delete-by-query && ./bin/elasticsearch"]
        volumes:
            - /home/styfle/esdata:/usr/share/elasticsearch/data
        ports:
            - 9200:9200
    kibana:
        restart: always
        user: ${MY_USER_ID}
        image: kibana:4.5.4
        ports: 
            - 5601:5601
        links:
            - elastic:elasticsearch

Я добавил строку user: ${MY_USER_ID} в файл docker-compose.yml выше. После этого вам нужно использовать приведенную ниже команду, чтобы раскрутить контейнеры и запустить эластичный поиск:

MY_USER_ID=$(id -u):$(id -g) docker-compose up elastic

Проверьте это и дайте мне знать обратную связь.

...