背景
近些日子公司将门户的数据处理到es服务中,现记录docker容器拉取、配置、使用等步骤以及遇到的问题。在下一次使用中尽可能快速搭建、部署,减少配置的工作量。
docker 配置 es
- 查找、拉取镜像
snackpub@snackpubdeMacBook-Pro ~ % docker search elasticsearch
snackpub@snackpubdeMacBook-Pro ~ % docker pull elasticsearch:7.17.4
snackpub@snackpubdeMacBook-Pro ~ % docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
elasticsearch 7.17.4 c5ac99164e4b 23 months ago 618MB
- 运行镜像
如果是在Docker desktop 直接运行可能会报错,因为 es 服务默认配置的cluster。我们指定单节点运行。
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e
"discovery.type=single-node" c5ac99164e4b
discovery.type=single-node 环境变量是为了让Elasticsearch在单节点模式下运行,适用于测试或开发环境。
持久化存储或者配置修改,可以使用volume挂载配置文件或数据目录
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e
"discovery.type=single-node" -v
"$PWD/config/elasticsearch.yml":/usr/share/elasticsearch/config/elasticsearch.yml
-v "$PWD/data":/usr/share/elasticsearch/data
c5ac99164e4b
我们挂载了当前目录下的config/elasticsearch.yml文件作为Elasticsearch的配置文件,同时挂载了$PWD/data目录作为Elasticsearch的数据存储目录。 请确保您的主机目录有适当的权限,以便Elasticsearch容器能够读写数据。
- 查看运行的容器
snackpub@snackpubdeMacBook-Pro ~ % docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f1a3a8768db1 c5ac99164e4b "/bin/tini -- /usr/l…" 34 hours ago Up 13 hours 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp es
看到上面的信息后,访问es服务端点: http://localhost:9200/
- Docker 容器中安装 Vim, vm 编辑文件太难用了。。。
sudo apt-get update && apt-get install vim -y
- 安装 dejavu 服务,用来查看es里面的数据
docker pull appbaseio/dejavu
docker run -ti --name es-client -p 1358:1358 -d appbaseio/dejavu
可能需要配置下跨域,进入ES容器进行配置
docker exec -ti c5ac99164e4b /bin/bash
root@f1a3a8768db1:/usr/share/elasticsearch/config# vim elasticsearch.yml
# 配置允许跨域访问
http.port: 9200
http.cors.allow-origin: http://localhost:1358,http://127.0.0.1:1358
http.cors.enabled: true
http.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization
http.cors.allow-credentials: true
启动成功后访问: http://localhost:1358/
常用命令
PUT http://127.0.0.1:9200/one_bidding_web_index/_doc/2ccde2d962c84707a88da64222408831?timeout=1m
curl -X GET "http://127.0.0.1:9200/one_bidding_web_index/_doc/2ccde2d962c84707a88da64222408831?pretty"
curl -X POST "http://127.0.0.1:9200/one_bidding_web_index/_refresh"