Elasticsearch:定制 Elasticsearch 镜像

在很多时候,我们希望定制我们的 Elasticsearch 镜像,比如,我们需要安装一些额外的插件,或者如果我们想要一个带有同义词文件和自定义配置的 Elasticsearch?或者我们需要一些相应的配置等。我们想在每次的 docker 部署中重复上面的步骤,那么我们该怎么做呢? 找到包含所有细节的片段可能会有点困难。 考虑到这一点,我决定为我们的 docker 容器发布一个更详细的自定义配置帖子。

要求

  • Docker 已经安装在我们的系统中
  • 登录Docker
  • Visual Studio 代码或你喜欢的一些编辑器来创建和编辑文件

创建 Dockerfile

  • 创建一个名为 Dockerfile 的新文件,不带扩展名,我们将在其中设置自定义 Elasticsearch 安装所需的所有步骤。
  • 决定我们要使用的版本。 例如,我们将使用 8.7.0。
  • 第一行将是:
From docker.elastic.co/elasticsearch/elasticsearch:8.7.0 as elasticsearch
  • 添加同义词文件 —— synonyms_path 应该是主机中包含同义词文件的文件夹在我们拥有 Dockerfile 的同一文件夹中的路径:
ADD ./{synonyms_path}/ /usr/share/elasticsearch/config/
VOLUME ["/usr/share/elasticsearch/config/"]
  • 添加配置 —— config_path 应该是主机中包含配置文件的文件夹在我们拥有 Dockerfile 的同一文件夹中的路径:
ADD ./{config_path}/ /usr/share/elasticsearch/config/
VOLUME ["/usr/share/elasticsearch/config/"]
  • 添加插件 —— plugins_path 应该是主机中包含插件的文件夹在我们拥有 Dockerfile 的同一文件夹中的路径:
ADD ./{plugins_path}/ /usr/share/elasticsearch/plugins/
VOLUME ["/usr/share/elasticsearch/plugins/"]

注意:所有插件都应该为我们使用的相同版本的 Elasticsearch 构建:8.7.0

  • 公开 Elasticsearch 端口:
EXPOSE 9200

你应该有一个像这样的 Dockerfile:

Dockerfile

From docker.elastic.co/elasticsearch/elasticsearch:8.7.0 as elasticsearch

ADD ./{synonyms_path}/ /usr/share/elasticsearch/config/
VOLUME ["/usr/share/elasticsearch/config/"]

ADD ./{config_path}/ /usr/share/elasticsearch/config/
VOLUME ["/usr/share/elasticsearch/config/"]

ADD ./{plugins_path}/ /usr/share/elasticsearch/plugins/
VOLUME ["/usr/share/elasticsearch/plugins/"]

EXPOSE 9200

我们有两个选择:创建一个 docker compose 文件或运行以下命令来构建镜像:

docker build . -f Dockerfile -t elasticsearch

使用下面的命令来启动容器:

docker run -p 9200:9200 elasticsearch

如果我们更喜欢使用 docker compose,我们需要在 Dockerfile 的同一文件夹中创建一个名为 docker-compose.yaml 的新文件,其中包含以下文本:

docker-compse.yaml

version: "3.4"
networks:
    internal-network:
        driver: bridge
services:
  elasticsearch:
    image: elasticsearch
    container_name: elasticsearch
    networks:
        - internal-network
    build:
      context: .
      dockerfile: Dockerfile
      target: elasticsearch
    ports:
        - 9200:9200
    environment:
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"

要启动容器,我们在包含 docker-compose 文件的文件夹中运行以下命令:

docker compose up

我们现在在我们计算机的容器中运行了 Elasticsearch!

我们甚至可以使用 docker save 命令来把这个 image 保存下来,并到其他的电脑上使用 docker load 来进行安装。

猜你喜欢

转载自blog.csdn.net/UbuntuTouch/article/details/130453705