#!/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