默认已经有docker环境
下载与安装 elasticsearch ,从hub.docker里面可以看到最新版本的镜像,选择你想要的版本
本教程是以 7.17.7 为案例,为啥不适用最新的,首先个人一般需用最新的版本,如果有亢很难填,其次我自己的服务器下载的太慢(还是配置了docker加速地址的)拉取几个小时都下载不下来7.17.9版也一样,直接放弃~ 最终挑到了7.17.7
【官方传递】https://hub.docker.com/_/elasticsearch
一、安装、运行 elasticsearch
拉取镜像
docker pull elasticsearch:7.17.7
运行实例
docker run -d --name elasticsearch -p 9200:9200 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.17.7
访问 ip+9200 出现该界面表示已经安装、运行成功!
如果没有成功,请看一下docker 运行的日志
docker logs [OPTIONS] CONTAINER OPTIONS说明:
-f : 跟踪日志输出
–since :显示某个开始时间的所有日志
-t : 显示时间戳
–tail : 仅列出最新N条容器日志
为防止重要的数据掉失,我们需要将es重要文件挂载到外部
1.找个存储文件的目录,我这里放置在/usr/docker
- 执行复制容器文件命令
首先得知道运行的容器信息,执行 docker ps 查看正在运行的实例
可通过 docker exec -it 容器id /bin/bash 进入容器内容查看,通过 exit 退出容器内部
复制容器内容到 /usr/docker 目录
docker cp e3b71d0d624b:/usr/share/elasticsearch /usr/docker
复制完成就可以看到 es的一大推文件
- 删除之前运行的实例,先停止再删除
docker stop xx
docker rm xxx
- 重新运行实例,命令如下
docker run -d --name es -p 9200:9200 -p 9300:9300 -v /usr/docker/elasticsearch/data:/usr/share/elasticsearch/data -v /usr/docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/docker/elasticsearch/logs:/user/share/elasticsearch/logs -v /usr/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins -v /usr/docker/elasticsearch/backup:/usr/share/elasticsearch/backup -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" --restart=always elasticsearch:7.17.7
参数部分解释,elasticsearch更多docker相关参数可在hub.docker里面找到
-v xxx:/xx 表示要挂载的目录或文件
-e ES_JAVA_OPTS=“-Xms64m -Xmx512m” 表示最大内存512M,最小内存64M
–restart=always 随docker自动重启 注:这里限制内存 不然小服务器顶不住。
运行成功,可以看到cpu,内存差点爆表,不过不用担心稍会就会降下去。至于为啥会这样目前不太清楚,有大神可以留言,请教一下!感谢好心人!
二、安装elasticsearch可视化工具
这里选择了 elasticsearch head
#拉取镜像
docker pull mobz/elasticsearch-head:5
#运行实例
docker run -p 9100:9100 --name elasticsearch-head -d mobz/elasticsearch-head:5
运行成功如下
虽然运行成功了但可以看到是未连接的状态,就算输入了正确的ip地址还是不能连接,打开F12可以看到是跨域的问题
解决办法
修改docker中elasticsearch的elasticsearch.yml文件,在最后面加上
http.cors.enabled: true
http.cors.allow-origin: "*"
可像我这样找到已经挂载在外部的配置文件,打开修改也可以使用命令随你喜欢~(记得重启服务)
如果没有挂载在外部的可进行容器里面修改(强烈推荐挂载)
docker exec -it 容器id /bin/bash
vi config/elasticsearch.yml
xxxx
#退出并重启服务
exit
docker restart 容器id
重启服务后输入正确的ip,可以看到这个界面表明可以了
最后需要解决elasticsearch-head 面板操作数据时不显示报406的问题,如图打开这些界面发现是空白的而且报错。
解决版本 修改_site/vendor.js 文件
6886行 contentType: “application/x-www-form-urlencoded”, 改成
contentType: “application/json;charset=UTF-8”, 7573行 var inspectData =
s.contentType === “application/x-www-form-urlencoded” && 改成 var
inspectData = s.contentType === “application/json;charset=UTF-8” &&
你可以选择将文件挂载到外部去,也可以进行容器里面直接修改。
●先把elasticsearch-head的文件挂载到外部去,这里就不详细的贴出来了。
docker cp 0b5e6db9316a:/usr/src/app /usr/docker/eshead
我这里遇到一个小问题,在查看挂载信息发现文件确实时挂载成功了,但是打开vendor.js发现还是原来的内容这让我很困惑不知道是不是缓存的原因。随后我在url后面加上了版本号发现还是原来的内容 ~~
只能暴力解决了,后面在找个时间看看是什么回事 ~~
从外部复制文件到容器里面
docker cp /usr/docker/eshead/app/_site/vendor.js 容器id:/usr/src/app/_site
重启服务,好了,刷新界面看到这个界面就 ok
查看挂载信息
docker inspect 容器id
到此我们安装教程已经结束了,下篇将与wep api 对接完成我们的全站搜索功能
附源加速