Elasticsearch:定制 Elasticsearch 镜像

635 阅读3分钟

在很多时候,我们希望定制我们的 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 的同一文件夹中的路径:


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


  • 添加配置 —— config_path 应该是主机中包含配置文件的文件夹在我们拥有 Dockerfile 的同一文件夹中的路径:


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


  • 添加插件 —— plugins_path 应该是主机中包含插件的文件夹在我们拥有 Dockerfile 的同一文件夹中的路径:


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


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

  • 公开 Elasticsearch 端口:
EXPOSE 9200

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

Dockerfile



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

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

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

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

12.  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

![图片转存失败,建议将图片保存下来直接上传
        `

1.  version: "3.4"
2.  networks:
3.      internal-network:
4.          driver: bridge
5.  services:
6.    elasticsearch:
7.      image: elasticsearch
8.      container_name: elasticsearch
9.      networks:
10.          - internal-network
11.      build:
12.        context: .
13.        dockerfile: Dockerfile
14.        target: elasticsearch
15.      ports:
16.          - 9200:9200
17.      environment:
18.        - bootstrap.memory_lock=true
19.        - "ES_JAVA_OPTS=-Xms512m -Xmx512m"

` (https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
]()```

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

docker compose up


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

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