自己动手制作 elasticsearch-head 的 Docker 镜像
欢迎访问我的 GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
关于 elasticsearch-head 插件
通过 elasticsearch-head 插件可以更方便的查询 es,观察 es 状态,插件官方地址:https://github.com/mobz/elasticsearch-head
为什么要自己制作 elasticsearch-head 的 Docker 镜像
原因很简单:elasticsearch-head 的官方 Docker 镜像只支持 elasticsearch5.x 版本,而现在 elasticsearch6.x 版本已经广泛使用了,以下就是 elasticsearch-head 官方的支持情况:
先去 hub.docker.com 上搜索,如下图,最后一次更新已经是两年前,只支持 elasticsearch5 版本:
elasticsearch-head 官网说得很清楚,只支持 elasticsearch5、2、1 版本,并不支持 6,如下图:
如果在 Docker 环境下运行 elasticsearch 版本是 6.x 版本,是没有与之匹配的 head 插件镜像的,此时的解决方法有以下三种:
把 head 插件搭建在 Docker 环境之外,也就是在物理机部署 head;
寻找非官方的 head 镜像;
掌握 head 插件镜像的制作方法,随时按照自己的需要制作支持任意版本的镜像;
今天的文章讨论的就是第三种方法:自己制作 elasticsearch-head 插件;
实战环境
操作系统:CentOS 7.6
docker:17.03.2-ce
docker-compose:version 1.23.2
不用 Docker 的时候,elasticsearch-head 是如何在物理机上部署的
想做出 elasticsearch-head 镜像,先要对 elasticsearch-head 的常规部署方式有所了解,简单的罗列如下:
准备好 nodejs 环境;
下载 elasticsearch-head 源码;
安装 grunt-cli;
安装 elasticsearch-head;
用 grunt 命令启动;
更多部署 elasticsearch-head 的详情请参考《Linux环境快速搭建elasticsearch6.5.4集群和Head插件》;
编写 Dockerfile 文件
前面已清楚了 head 插件的常规部署流程,接下来的事情就简单了,按照上述流程制作 Dockerfile,制作之前要注意以下几点:
基础镜像选哪个?我这里选择的是 nodejs 的官方镜像,这样就可以不用搭建 nodejs 环境了,最好选择 alpine 版本,这样的镜像体积更小;
多个 shell 命令的操作,尽量用**&&**连接起来,这样生成的镜像 layer 数更少,体积也会更小;
head 插件的源码地址,我选用了 master 版本的地址,您可以根据自己的需要改成指定的分支;
完整的 Dockerfile 内容如下,每一行都有详细的注释,就不多赘述了:
构建镜像
在 Dockerfile 所在目录执行以下命令即可构建镜像:
构建的过程中,执行 npm install 的时候会在 github 下载源码,此时有很大概率超时报错退出,多重试几次是可以成功的;
构建成功后,执行命令 docker history bolingcavalry/elasticsearch-head:6 查看构建信息,如下:
验证镜像
接下来在 Docker 上部署 elasticsearch+elasticsearch-head,验证做好的镜像是否好用,创建 docker-compose.yml 文件,内容如下:
在 docker-compose.yml 文件所在目录下执行命令 docker-compose up -d,即可创建 yml 文件中编排的容器,如下:
假设 docker 所在电脑的 IP 地址是 192.168.1.101,如下图,在浏览器访问此地址可以查看 es 的信息:http://192.168.1.101:9200
看到上述信息表示 es 启动成功了;
如下图,elasticsearch-head 的访问地址是:http://192.168.1.101:9100
创建索引、文档,再在 head 页面上查看一切正常,如下图,与物理机环境无异:
将镜像提交到 hub.docker.com
前面构建好的镜像只存在本地电脑,我们可以将其提交到 docker 仓库给更多用户使用:
提交镜像到 hub.docker.com 网站,需要用到该网站的账号,请确保您已经在此网站注册过;
执行 docker login 登录,期间会要求输入用户名和密码;
执行命令 docker push bolingcavalry/elasticsearch-head:6,即可将本地镜像 push 到 hub.docker.com;
注意镜像名称的前缀,例如我这里的前缀是 bolingcavalry,要和账号保持一致;
提交成功后,在 hub.docker.com 网站即可看到此镜像,如下图,此时任何人都可以 pull 来下使用了:
至此,整个 head 插件的镜像制作实战已完成,希望能给您提供参考,做出更适合自己的定制镜像;
欢迎关注 51CTO 博客:程序员欣宸
版权声明: 本文为 InfoQ 作者【程序员欣宸】的原创文章。
原文链接:【http://xie.infoq.cn/article/7dcc3d65f6b5b3b00d338a901】。文章转载请联系作者。
评论