docker - 尝试在 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.1
,2.0.0
但错误仍然相同
如何更改 Dockerfile 以允许执行弹性搜索服务的脚本?
解决方案
我能够使用 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
搜索出于某种原因忽略了配置文件,不知道为什么。如果您有任何想法,请在评论中分享