首页 > 解决方案 > 尝试在 docker 容器中运行弹性服务时禁用 [groovy] 的动态脚本

问题描述

我在我的 rails 应用程序中使用 elasticsearch 1.4.4。要在本地启动它,我从那里下载弹性,解压,添加

script.inline: on
script.indexed: on

elasticsearch-1.4.4/config/elasticsearch.yml运行_elasticsearch-1.4.4/bin/elasticsearch

测试通过,没有错误。当我尝试将 elasticsearch 服务作为 docker 容器启动时,我执行以下步骤:

添加Dockerfile.elasticsearch-1.4.4

FROM elasticsearch:1.4.4

RUN echo 'script.inline: on' >> /etc/elasticsearch/elasticsearch.yml
RUN echo 'script.indexed: on' >> /etc/elasticsearch/elasticsearch.yml

CMD ["elasticsearch"]

构建镜像:

docker build - < Dockerfile.elasticsearch-1.4.4 -t hirurg103/elasticsearch-1.4.4:1.0

启动容器:

docker run -p 9200:9200 "hirurg103/elasticsearch-1.4.4:1.0"

当我运行测试时,其中一些失败

nested: ScriptException[dynamic scripting for [groovy] disabled

我尝试使用 docker 构建 elasticsearch 1.6.12.0.0但错误仍然相同

如何更改 Dockerfile 以允许执行弹性搜索服务的脚本?

标签: dockerelasticsearch

解决方案


我能够使用 elasticsearch 编译 docker 映像,并从以下 Dockerfile 启用脚本:

FROM elasticsearch:1.4.4

...

RUN echo 'script.inline: on' >> /etc/elasticsearch/elasticsearch.yml
RUN echo 'script.indexed: on' >> /etc/elasticsearch/elasticsearch.yml
RUN echo 'script.disable_dynamic: false' >> /etc/elasticsearch/elasticsearch.yml
...
CMD ["elasticsearch", "-Des.config=/etc/elasticsearch/elasticsearch.yml"]
# Note this line! ^

似乎弹性/etc/elasticsearch/elasticsearch.yml搜索出于某种原因忽略了配置文件,不知道为什么。如果您有任何想法,请在评论中分享


推荐阅读