如何使用docker compose安装ElasticSeach插件

时间:2016-09-25 20:43:38

标签: elasticsearch docker docker-compose elasticsearch-plugin

我有一个带有弹性搜索图像的docker-compose.yml文件:

elasticsearch:
  image: elasticsearch
  ports:
    - "9200:9200"
  container_name: custom_elasticsearch_1

如果我想安装其他插件,如HQ界面或附件映射器,我必须使用以下命令进行手动安装:

$ docker exec custom_elasticsearch_1 plugin install royrusso/elasticsearch-HQ
$ docker exec custom_elasticsearch_1 plugin install mapper-attachments

有没有办法在运行docker-compose up命令时自动安装它们?

5 个答案:

答案 0 :(得分:8)

Here是Elastic的一篇博文,与此完全相同!您需要使用Dockerfile执行命令来扩展图像。你的Dockerfile看起来像这样:

$(window).scroll(function() {
var div_offset  = $("#leftscr").offset().top;
var window_scroll = $(window).scrollTop();
if(window_scroll < div_offset) {
    $("div#l2").css({
        "left": window_scroll + "px"
    }).text("left&right:"+window_scroll + "px");
    }
});

答案 1 :(得分:2)

受@NickPridorozhko的回答启发,但使用elasticsearch ^ 7.0.0(使用docker stack / swarm)进行了更新和测试,例如带有analysis-icu的示例:

elasticsearch:
  image: docker.elastic.co/elasticsearch/elasticsearch:7.3.0
  user: elasticsearch
  command: >
    /bin/sh -c "./bin/elasticsearch-plugin list | grep -q analysis-icu 
    || ./bin/elasticsearch-plugin install analysis-icu; 
    /usr/local/bin/docker-entrypoint.sh"
  ...

主要区别是针对^ 7.0.0的更新命令,以及使用docker入口点而不是./bin/elasticsearch(在堆栈的上下文中,您会得到与可生成进程的限制有关的错误)

答案 2 :(得分:1)

如果您使用的是<Style TargetType="{x:Type ListViewItem}"> <Setter Property="Background" Value="Red"></Setter> <Setter Property="HorizontalContentAlignment" Value="Stretch" /> <Setter Property="BorderThickness" Value="1" /> <Setter Property="Padding" Value="0" /> </Style> <DataTemplate DataType="{x:Type model:Image}"> <Border Background="Blue" Padding="4,1"> <StackPanel Orientation="Horizontal"> <Image Source="{DynamicResource ImgIcon}"></Image> <Label Content="Filename:"></Label> <Label Content="{Binding Name}"></Label> <Label Content="Size:"></Label> <Label Content="{Binding Size}"></Label> </StackPanel> </Border> </DataTemplate> <DataTemplate DataType="{x:Type model:Text}"> <Border Background="Green" Padding="4,1"> <StackPanel Orientation="Horizontal"> <Image Source="{DynamicResource TextIcon}"></Image> <Label Content="Filename:"></Label> <Label Content="{Binding Name}"></Label> <Label Content="Size:"></Label> <Label Content="{Binding Size}"></Label> </StackPanel> </Border> </DataTemplate> 中的ELK堆栈

您需要像

一样设置sebp/elk
Dockerfile

https://elk-docker.readthedocs.io/#installing-elasticsearch-plugins上看到。

它也应该仅适用于Elastic Search。

答案 3 :(得分:0)

这对我有用。先安装插件,然后继续启动elasticsearch。

elasticsearch:
  image: elasticsearch
  command:
    - sh
    - -c
    - "plugin list | grep -q plugin_name || plugin install plugin_name;
       /docker-entrypoint.sh elasticsearch"

答案 4 :(得分:0)

摄取附件插件需要其他权限,并在安装过程中提示用户。我使用了yes命令:

elasticsearch:
  image: elasticsearch:6.8.12
  command: >
    /bin/sh -c "./bin/elasticsearch-plugin list | grep -q ingest-attachment 
    || yes | ./bin/elasticsearch-plugin install --silent ingest-attachment; 
    /usr/local/bin/docker-entrypoint.sh eswrapper"