Docker-compose 部署 ElasticSearch 并配置 IK 分词器


相关参考

Spring和ES版本对照表

一. 编写脚本

vim install.sh
#!/bin/bash

# 变量
# Elasticsearch 版本号
es_version=8.12.2
# 9200端口映射
port_9200=9200
# 9300端口映射
port_9300=9300
# 节点模式
discovery_type="single-node"
# java配置
es_java_opts="-Xms512m -Xmx512m"
# 配置目录
dir_conf="$(pwd)/config"
# 数据目录
dir_data="$(pwd)/data"
# 插件目录
dir_plugins="$(pwd)/plugins"
# 日志目录
dir_logs="$(pwd)/logs"
# 当前用户UID
uid=$(id -u)
# 当前用户组ID
gid=$(id -g)
# 运行容器的身份
es_user="${uid}:${gid}"
# 容器内配置文件路径
es_conf_path="/usr/share/elasticsearch/config"
# 容器内数据文件路径
es_data_path="/usr/share/elasticsearch/data"
# 容器内插件文件路径
es_plugins_path="/usr/share/elasticsearch/plugins"
# 容器内日志文件路径
es_logs_path="/usr/share/elasticsearch/logs"
# 配置文件临时路径
temp_conf_path="/es_conf_temp"
# 镜像名称
image_name="elasticsearch"
# 镜像标签
image_tag="$es_version"
# 服务名称
services_name="elasticsearch"
# 容器名称
container_name="elasticsearch"

# 创建目录
mkdir $dir_conf
mkdir $dir_data
mkdir $dir_plugins
mkdir $dir_plugins/ik
mkdir $dir_logs

# IK分词器
# wget https://github.com/infinilabs/analysis-ik/releases/download/v8.12.2/elasticsearch-analysis-ik-8.12.2.zip
cp elasticsearch-analysis-ik-8.12.2.zip plugins/ik/
unzip plugins/ik/elasticsearch-analysis-ik-8.12.2.zip -d plugins/ik/

# 默认配置文件
echo docker run --rm --user 1004:1004 -v $dir_conf:$temp_conf_path $image_name:$image_tag sh -c \"cp -r $es_conf_path/* $temp_conf_path\"
docker run --rm --user 1004:1004 -v $dir_conf:$temp_conf_path $image_name:$image_tag sh -c "cp -r $es_conf_path/* $temp_conf_path"

# 生成docker-compose.yml文件
cat <<EOF > docker-compose.yml
version: '3'

services:
  $services_name:
    container_name: $container_name
    image: $image_name:$image_tag
    environment:
      - discovery.type=$discovery_type
      - "ES_JAVA_OPTS=$es_java_opts"
    ports:
      - "$port_9200:9200"
      - "$port_9300:9300"
    volumes:
      - $dir_conf:$es_conf_path
      - $dir_data:$es_data_path
      - $dir_plugins:$es_plugins_path
      - $dir_logs:$es_logs_path
    user: $es_user
EOF

# 生成 gen_pass.sh 文件
cat <<EOF > gen_pass.sh
#!/bin/bash

docker-compose exec $services_name bin/elasticsearch-setup-passwords auto
EOF
# 授予可执行权限
chmod +x gen_pass.sh

二. 添加运行权限

chmod +x install.sh

三. 执行脚本

./install.sh

四. 启动容器

docker-compose up -d

五. 查看日志

docker-compose logs

六. 生成密码

./gen_pass.sh

评论已关闭