前端框架选型是企业提升开发效率与用户体验的关键因素
639
2022-10-23
自己动手制作elasticsearch-head的Docker镜像
欢迎访问我的GitHub
关于elasticsearch-head插件
通过elasticsearch-head插件可以更方便的查询es,观察es状态,插件官方地址:https://github.com/mobz/elasticsearch-head
为什么要自己制作elasticsearch-head的Docker镜像
原因很简单:elasticsearch-head的官方Docker镜像只支持elasticsearch5.x版本,而现在elasticsearch6.x版本已经广泛使用了,以下就是elasticsearch-head官方的支持情况:
如果在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内容如下,每一行都有详细的注释,就不多赘述了:
#Docker image of elasticsearch-head
# VERSION 6
# Author: bolingcavalry
#基础镜像使用node:10.15.0,以便通过npm来安装head插件
FROM node:10.15.0-alpine
#作者
MAINTAINER BolingCavalry
构建镜像
在Dockerfile所在目录执行以下命令即可构建镜像:
docker build -t bolingcavalry/elasticsearch-head:6 .
构建的过程中,执行npm install的时候会在github-源码,此时有很大概率超时报错退出,多重试几次是可以成功的;
构建成功后,执行命令docker history bolingcavalry/elasticsearch-head:6查看构建信息,如下:
[root@hedy head]# docker history bolingcavalry/elasticsearch-head:6
IMAGE CREATED CREATED BY SIZE COMMENT
e6833fce7a81 9 hours ago /bin/sh -c #(nop) CMD ["grunt" "server"] 0 B
34889db72a32 9 hours ago /bin/sh -c #(nop) EXPOSE 9100/tcp 0 B
761b38387909 9 hours ago /bin/sh -c #(nop) WORKDIR /usr/src/app/ela... 0 B
893cec2c77e6 9 hours ago /bin/sh -c mkdir -p $SRC_DOWN_PATH && cd $... 139 MB
ead96e1a5663 9 hours ago /bin/sh -c #(nop) ENV SRC_DOWN_PATH=/usr/... 0 B
4648dcf3c904 9 hours ago /bin/sh -c #(nop) MAINTAINER BolingCavalr... 0 B
288d2f688643 4 weeks ago /bin/sh -c #(nop) CMD ["node"] 0 B
验证镜像
接下来在Docker上部署elasticsearch+elasticsearch-head,验证做好的镜像是否好用,创建docker-compose.yml文件,内容如下:
version: '2.2' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:6.5.4 container_name: elasticsearch environment: - cluster.name=docker-cluster - bootstrap.memory_lock=true - http.cors.enabled=true - http.cors.allow-origin=* - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - esdata1:/usr/share/elasticsearch/data ports: - 9200:9200 networks: - esnet elasticsearch2: image: docker.elastic.co/elasticsearch/elasticsearch:6.5.4 container_name: elasticsearch2 environment: - cluster.name=docker-cluster - bootstrap.memory_lock=true - http.cors.enabled=true - http.cors.allow-origin=* - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - "discovery.zen.ping.unicast.hosts=elasticsearch" ulimits: memlock: soft: -1 hard: -1 volumes: - esdata2:/usr/share/elasticsearch/data networks: - esnet head: image: bolingcavalry/elasticsearch-head:6 container_name: head ports: - 9100:9100 networks: - esnet
在docker-compose.yml文件所在目录下执行命令docker-compose up -d,即可创建yml文件中编排的容器,如下:
[root@hedy temp]# docker-compose up -d Creating network "temp_esnet" with the default driver Creating volume "temp_esdata2" with local driver Creating volume "temp_esdata1" with local driver Creating elasticsearch ... done Creating head ... done Creating elasticsearch2 ... done
将镜像提交到hub.docker.com
欢迎关注51CTO博客:程序员欣宸
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~