在很多时候,我们希望定制我们的 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 来进行安装。