【问题标题】:how to pre-configure an elasticsearch pipeline in docker image?如何在 docker 映像中预配置弹性搜索管道?
【发布时间】:2019-03-14 21:28:23
【问题描述】:

我有一个弹性搜索图像,它被用作多个容器的基础图像。我想知道是否有任何方法可以预先配置摄取管道,以便创建图像和构建容器的过程也为我创建管道?如果基础映像带有我希望它拥有的管道,那就太好了,否则我必须将 docker exec 放入使用此映像的每个容器中,并在每个容器中发送一个 curl 请求以创建管道。

现在我在想我必须在 docker-entrypoint.sh 中添加一个 curl 到 elasticsearch 服务器(在它启动之后),但我不确定是否还有其他方法

【问题讨论】:

    标签: docker elasticsearch


    【解决方案1】:

    我可以建议您使用 docker-compose。我个人觉得非常方便。使用一个文件,您可以配置整个堆栈。

    这是一个帮助您开始的示例:

     version: '2.2'
    services:
      elasticsearch:
        image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
        container_name: elasticsearch
        environment:
          - cluster.name=docker-cluster
          - node.name=node-test1
          - bootstrap.memory_lock=true
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - node-test1data:/usr/share/elasticsearch/data
        ports:
          - 9200:9200
      elasticsearch2:
        image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
        container_name: elasticsearch2
        environment:
          - cluster.name=docker-cluster
          - node.name=node-test2
          - bootstrap.memory_lock=true
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
          - "discovery.zen.ping.unicast.hosts=elasticsearch"
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - node-test2data:/usr/share/elasticsearch/data
      kibana:
        image: docker.elastic.co/kibana/kibana:6.3.2
        container_name: kibana
        ports:
          - 5601:5601
        environment:
          ELASTICSEARCH_URL: http://elasticsearch:9200
        depends_on:
           - elasticsearch
      logstash:
        image: docker.elastic.co/logstash/logstash:6.3.2
        container_name: logstash
        ports:
          - "5000:5000"
        environment:
          LS_JAVA_OPTS: "-Xmx256m -Xms256m"
        volumes:
          - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro
          - ./logstash/pipeline:/usr/share/logstash/pipeline:ro
    

    【讨论】:

    • 对我缺乏 docker 经验表示歉意,但是我应该在 docker-compose 中的哪个位置放置 elasticsearch 的管道定义?
    • 没问题,你应该把管道定义放在logstash/pipeline/logstash.conf。然后将卷映射到 docker 容器,如上面 docker-compose 的 logstash 卷部分所示。
    • 如果我们不想使用logstash,而是直接使用elasticsearch的摄取节点怎么办。那我们该如何配置呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 2018-07-22
    • 2018-09-24
    • 1970-01-01
    相关资源
    最近更新 更多