使用我自己的 elasticsearch.yml 启动 elasticsearch dockerfile

使用我自己的 elasticsearch.yml 启动 elasticsearch dockerfile

我正在通过此处找到的 dockerfile 启动 elasticsearch:

https://index.docker.io/u/ehazlett/elasticsearch/

效果很好。我需要定义自己的主机,因为我的环境不支持任何类型的多播。

我了解我的选择是:

1)在 elasticsearch 运行时作为命令行参数提供主机

2)修改我的elasticsearch.yml文件来设置主机。

我知道如何构建 yml,我需要知道的是如何使用我自己的 yml 而不是容器中的 yml 通过 docker 启动 elasticsearch。这可能吗?

谢谢。

答案1

您可以使用“-Des.config”参数指定elasticsearch.yml。

例如:

elasticsearch -Des.config=/path/to/elasticsearch.yml

或者在你的 Dockerfile 中:

CMD ["/usr/share/elasticsearch/bin/elasticsearch", "-Des.config=/path/to/elasticsearch.yml"]

答案2

如果您正在使用docker-compose,您可以volumesdocker-compose.yml文件中添加如下部分:

    volumes:
      - type: bind
        source: ./elasticsearch/config/elasticsearch.yml
        target: /usr/share/elasticsearch/config/elasticsearch.yml
        read_only: true

elasticsearch部分看起来如下:

services:
  elasticsearch:
    build:
      context: elasticsearch/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./elasticsearch/config/elasticsearch.yml
        target: /usr/share/elasticsearch/config/elasticsearch.yml
        read_only: true
      - type: volume
        source: elasticsearch
        target: /usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
      ELASTIC_PASSWORD: changeme
    networks:
      - elk

答案3

为了将您自己的 elasticsearch 配置添加到您的容器中,您可以选择创建自定义图像。

创建自定义镜像非常简单,如果您熟悉 Dockerfile,则只需要做几件事:

FROM base/elasticsearchimage
ADD elasticsearch.yml /path/to/conf/elasticsearch.yml
CMD ["/usr/share/elasticsearch/bin/elasticsearch", "-Des.config=/path/to/conf/elasticsearch.yml"]

将 Dockerfile 和 elasticsearch.yml 放在同一文件夹中并运行以下命令:

在 Linux 上:

sudo docker build -t username/elasticsearch.

Windows(通过 boot2docker):

docker build -t username/elasticsearch .

构建成功后执行以下操作:

docker run -d --name containername username/elasticsearch

这样,您将使配置始终可用于新容器,从而减少创建集群的工作量。

答案4

将自定义的yml文件复制到Dockerfile中的ES的config目录中,并将yml文件与Dockerfile放在同一目录中并构建镜像

FROM docker.elastic.co/elasticsearch/elasticsearch:7.6.2
COPY --chown=elasticsearch:elasticsearch ./elasticsearch.yml /usr/share/elasticsearch/config/

更多内容这里

相关内容