第一种方法:执行docker exec命令进入容器,再按照物理机的步骤来安装,显然每次创建容器都要这么做一次的话代价太高了;
第二种方法:做个集成了ik分词器的elasticsearch镜像,这样每个容器运行的时都自带了ik分词器;
今天实战的内容就是上面的第二种方法:自制elasticsearch镜像,该镜像继承了ik分词器;
版本信息
-
操作系统:CentOS 7.6
-
docker:17.03.2-ce
-
docker-compose:version 1.23.2
-
elasticsearch:这里选用的是6.5.0版本的elasticsearch,因为目前ik分词器官方最高只支持到6.5.0版本
常规的安装步骤
先来梳理一下常规的ik分词器安装步骤:
-
准备maven环境;
-
下载ik分词器源码;
-
编译构建源码;
-
编译结果是个zip包,复制到elasticsearch的插件目录去解压;
-
启动elasticsearch;
以上就是常规安装步骤,接下来就是把这些在elasticsearch的镜像中再做一遍即可;
编写Dockerfile
Dockerfile的内容如下,已经有了详细注释就不再赘述了:
#Docker image of elasticsearch with ik tokenizer
VERSION 6.5.0
Author: bolingcavalry
#基础镜像使用elasticsearch:6.5.0
FROM elasticsearch:6.5.0
#作者
MAINTAINER BolingCavalry zq2599@gmail.com
#es插件目录
ENV ES_PLUGINS_PATH /usr/share/elasticsearch/plugins
#定义maven的安装目录
ENV MAVEN_BASE_PATH /opt
#定义编译ik分词器源码的目录
ENV IK_SRC_COMPILE_PATH /opt/ik_build
#maven解压后的文件夹名称
ENV MAVEN_PACKAGE_NAME apache-maven-3.6.0
#将maven的bin目录加入PATH
ENV PATH=“ M A V E N B