我在我的图像中安装了基于ubuntu:16.04的Elasticsearch。
并使用启动服务
RUN服务弹性搜索开始但是,它没有开始。
如果我进入容器并运行它,它就会启动。…
我不知道为什么不采取官方的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 在你的主机上
sudo sysctl -w vm.max_map_count=262144
该 RUN 命令仅在构建阶段执行。它在构建完成后停止。你应该用 CMD (要么 ENTRYPOINT )而是:
RUN
CMD
ENTRYPOINT
CMD service elasticsearch start && /bin/bash
最好将启动命令包装在您自己的文件中,然后只执行该文件:
CMD /start_elastic.sh