构建包含IK插件(中文分词插件)的Elasticsearch镜像
#!/bin/bash# 定义变量
ES_VERSION="8.15.3"
IMAGE_NAME="elasticsearch-with-ik:${ES_VERSION}"
IK_PLUGIN_DIR="./elasticsearch-analysis-ik-${ES_VERSION}"
DOCKERFILE_NAME="Dockerfile.es-ik"# 检查IK插件目录是否存在
if [ ! -d "${IK_PLUGIN_DIR}" ]; thenecho "错误:IK插件目录 ${IK_PLUGIN_DIR} 不存在!"echo "请确保当前目录下有该插件目录"exit 1
fi# 创建临时Dockerfile,修复权限问题
cat > ${DOCKERFILE_NAME} << EOF
FROM docker.elastic.co/elasticsearch/elasticsearch:${ES_VERSION}# 切换到root用户以获得足够权限
USER root# 复制本地IK插件到容器中
COPY ${IK_PLUGIN_DIR} /usr/share/elasticsearch/plugins/ik# 设置权限
RUN chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/plugins/ik# 切换回elasticsearch用户
USER elasticsearchCMD ["./bin/elasticsearch"]
EOF# 构建镜像
echo "开始构建包含IK插件的Elasticsearch镜像..."
docker build -f ${DOCKERFILE_NAME} -t ${IMAGE_NAME} .# 记录构建结果
BUILD_SUCCESS=$?# 清理临时文件
rm -f ${DOCKERFILE_NAME}# 提示构建结果
if [ ${BUILD_SUCCESS} -eq 0 ]; thenecho "镜像构建成功:${IMAGE_NAME}"echo "可以使用以下命令启动:"echo "docker run -d --name elasticsearch -p 8100:9200 -e \"discovery.type=single-node\" -e \"ES_JAVA_OPTS=-Xms512m -Xmx512m\" -e \"xpack.security.enabled=false\" --ulimit memlock=-1:-1 --ulimit nofile=65536:65536 ${IMAGE_NAME}"
elseecho "镜像构建失败"exit 1
fi
这个文件就叫build_es_image.sh
切记 同级目录下 要下载好elasticsearch-analysis-ik-8.15.3