Docker 安装 Elasticsearch 9.2.1:配置挂载、CORS 与安全密码

拉取 ElasticSearch 镜像

1
docker pull elasticsearch:9.2.1

准备挂载文件

安装临时 ElasticSearch 容器,用于拷贝挂载文件:

1
docker run --name es -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:9.2.1

拷贝需要挂载的目录:

1
2
3
4
docker cp -a es:/usr/share/elasticsearch/config/ /docker-data/elasticsearch
docker cp -a es:/usr/share/elasticsearch/data/ /docker-data/elasticsearch
docker cp -a es:/usr/share/elasticsearch/logs/ /docker-data/elasticsearch
docker cp -a es:/usr/share/elasticsearch/plugins/ /docker-data/elasticsearch

停止并删除临时容器:

1
2
docker stop es
docker rm es

修改配置

编辑配置文件:

1
vi /docker-data/elasticsearch/config/elasticsearch.yml

添加 CORS 配置:

1
2
3
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

修改 SSL 配置:

1
2
3
xpack.security.http.ssl:
enabled: false
keystore.path: certs/http.p12

创建正式容器

1
2
3
4
5
6
7
8
9
docker run -p 9200:9200 -p 9300:9300 \
--privileged=true --name es \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms256m -Xmx256m" \
-v /docker-data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /docker-data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /docker-data/elasticsearch/logs:/usr/share/elasticsearch/logs \
-v /docker-data/elasticsearch/config:/usr/share/elasticsearch/config \
-d elasticsearch:9.2.1

设置用户名和密码

进入容器:

1
docker exec -it es /bin/bash

执行命令,输入 y 开始设置密码:

1
bin/elasticsearch-setup-passwords interactive

退出容器:

1
exit

重启容器:

1
docker restart es