Как я могу запустить скрипт установки searchguard после того, какasticsearch запущен и работает в докере? - PullRequest
0 голосов
/ 25 мая 2018

Я пытался настроить скрипт установки searchguard init_sg.sh для автоматического запуска послеasticsearch.Я не хочу делать это вручную с docker exec.Вот что я попробовал.

entrypoint.sh:

#! /bin/sh
elasticsearch
source init_sg.sh

Dockerfile:

FROM docker.elastic.co/elasticsearch/elasticsearch-oss:6.1.0

COPY config/ config/
COPY bin/ bin/

# Search Guard plugin
# https://github.com/floragunncom/search-guard/wiki
RUN elasticsearch-plugin install --batch com.floragunn:search-guard-6:6.1.0-20.1 \
    && chmod +x \
        plugins/search-guard-6/tools/hash.sh \
        plugins/search-guard-6/tools/sgadmin.sh \
    && chown -R elasticsearch config/sg/ \
    && chmod -R go= config/sg/


#  This custom entrypoint script is used instead of 
# the original's /usr/local/bin/docker-entrypoint.sh

ENTRYPOINT ["bash","-c","entrypoint.sh"]

Однако, он бросил бы cannot run elasticsearch as root error:

org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

Так что, я думаю, я не могу запустить эластичный поиск непосредственно в entrypoint.sh, что сбивает с толку, потому что нет проблем, когда Dockerfile подобен этому:

FROM docker.elastic.co/elasticsearch/elasticsearch-oss:6.1.0

COPY config/ config/
COPY bin/ bin/
....
CMD ["elasticsearch"]

Этот поток принятответ не работает.В контейнере нет файла "/run/entrypoint.sh".

Решение :

Наконец мне удалось это сделать.Вот мой собственный скрипт точки входа, который будет автоматически запускать скрипт установки searchguard:

source init_sg.sh

while [ $? -ne 0 ]; do
   sleep 10
   source init_sg.sh
done &

/bin/bash -c "source /usr/local/bin/docker-entrypoint.sh;"

Если у вас есть какие-либо альтернативные решения, пожалуйста, не стесняйтесь отвечать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...