Запуск Elasticsearch с докером - PullRequest
1 голос
/ 14 марта 2019

Я установил Elasticsearch в моем образе на основе ubuntu:16.04.

И запустить сервис, используя

RUN service elasticsearch start

но оно не было запущено.

Если я захожу в контейнер и запускаю его, он запускается.

Я хочу запустить службу и создать индекс при создании образа, ниже приведена часть моего Dockerfile.

Как запустить Elasticsearch в Dockerfile?

#install OpenJDK-8
RUN apt-get update && apt-get install -y openjdk-8-jdk && apt-get install -y ant && apt-get clean

RUN apt-get update && apt-get install -y ca-certificates-java && apt-get clean
RUN update-ca-certificates -f

ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
RUN export JAVA_HOME

#download ES
RUN wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
RUN apt-get install -y apt-transport-https
RUN echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-6.x.list
RUN apt-get update && apt-get install -y elasticsearch

RUN service elasticsearch start

Ответы [ 2 ]

2 голосов
/ 14 марта 2019

Команда RUN выполняется только на этапе сборки. Он останавливается после завершения сборки. Вы должны использовать CMD (или ENTRYPOINT) вместо:

CMD service elasticsearch start && /bin/bash

Лучше обернуть стартовую команду в свой собственный файл, а затем только выполнить файл:

CMD /start_elastic.sh
1 голос
/ 14 марта 2019

Не знаю, почему бы не взять официальный образ oss, но этот файл Docker на основе работы Debian:

FROM java:8-jre

ENV ES_NAME=elasticsearch \
        ELASTICSEARCH_VERSION=6.6.1
ENV ELASTICSEARCH_URL=https://artifacts.elastic.co/downloads/$ES_NAME/$ES_NAME-$ELASTICSEARCH_VERSION.tar.gz

RUN apt-get update && apt-get install -y --assume-yes openssl bash curl wget \
    && mkdir -p /opt \
    && echo '[i] Start create elasticsearch' \
    && wget -T 15 -O /tmp/$ES_NAME-$ELASTICSEARCH_VERSION.tar.gz $ELASTICSEARCH_URL \
    && tar -xzf /tmp/$ES_NAME-$ELASTICSEARCH_VERSION.tar.gz -C /opt/ \
    && ln -s /opt/$ES_NAME-$ELASTICSEARCH_VERSION /opt/$ES_NAME \
    && useradd elastic \
    && mkdir -p /var/lib/elasticsearch /opt/$ES_NAME/plugins /opt/$ES_NAME/config/scripts \
    && chown -R elastic /opt/$ES_NAME-$ELASTICSEARCH_VERSION/


ENV PATH=/opt/elasticsearch/bin:$PATH

USER elastic

CMD [ "/bin/sh", "-c", "/opt/elasticsearch/bin/elasticsearch --E cluster.name=test --E network.host=0 $ELASTIC_CMD_OPTIONS" ]

Я считаю, что большинство команд, которые вы сможете использовать в Ubuntu.

Не забудьте запустить sudo sysctl -w vm.max_map_count=262144 на вашем хосте

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