拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Docker Compose 本地环境搭建:Elasticsearch

Docker Compose 本地环境搭建Elasticsearch前言Docker Compose 本地环境搭建相关文章Docker Compose 本地环境搭建Elasticsearch.envdocker-compose.yml执行浏览器访问IK 分词器安装前言Docker Compose 本地环境搭建相关文章Docker Compose 本地环境搭建独立 Compose 共享网络 .env 统一管理架构设计篇Docker Compose 本地环境搭建.env 统一配置模板Docker Compose 本地环境搭建mysqlDocker Compose 本地环境搭建elasticsearchDocker Compose 本地环境搭建skywalkingDocker Compose 本地环境搭建redisDocker Compose 本地环境搭建nacosDocker Compose 本地环境搭建nginxDocker Compose 本地环境搭建Elasticsearch.env新增Elasticsearch相关配置############################################################# Elasticsearch 配置############################################################# Elasticsearch 镜像版本。ES_VERSION8.18.8# elastic 内置用户密码。ES_PASSWORDPass8520# Elasticsearch HTTP REST API 宿主机端口。ES_PORT_HTTP9200# Elasticsearch Transport 宿主机端口。ES_PORT_TRANSPORT9300docker-compose.yml# # Elasticsearch Docker Compose 配置# ## 目录结构# dev/# ├── .env# └── elasticsearch/# ├── docker-compose.yml# └── volumes/# ├── config/ # Elasticsearch 配置# ├── data/ # Elasticsearch 持久化数据# ├── logs/ # Elasticsearch 日志# └── plugins/ # Elasticsearch 第三方插件## 说明## 1. 环境配置# Elasticsearch 所需的版本、密码、端口、网络等参数# 统一由当前环境上级目录的公共 .env 文件管理。## 2. 持久化目录# Elasticsearch 需要长期保存的配置、数据、日志和插件# 统一存放在 elasticsearch/volumes/ 目录下。## 3. 路径规则# 所有宿主机挂载目录均采用相对路径# 相对路径以当前 docker-compose.yml 所在目录为基准。# 例如 ./volumes/data 对应 elasticsearch/volumes/data。## 4. 环境隔离# 不在挂载路径中重复使用 ${ENV}。# 不同环境通过上层目录进行隔离例如# dev/elasticsearch、test/elasticsearch、prod/elasticsearch。## 5. 数据迁移# elasticsearch/ 目录包含 Compose 配置及 Elasticsearch# 持久化数据可作为当前环境的整体备份和迁移单元。## 6. 镜像文件# Elasticsearch 镜像自身的程序、JDK、依赖库和内置模块# 由 Docker 镜像提供不进行宿主机持久化挂载。## ############################################################# 网络配置############################################################networks:# Compose 内部网络名称。env_network:# 使用 Docker Bridge 网络。driver: bridge# Docker 实际网络名称由公共 .env 管理。name:${NETWORK_NAME}# 自定义网络地址范围。ipam: config: - subnet:${NETWORK_SUBNET}############################################################# 服务配置############################################################services:########################################################### Elasticsearch##########################################################elasticsearch:# Elasticsearch 镜像及版本。# 版本由公共 .env 中的 ES_VERSION 管理。image: elasticsearch:${ES_VERSION}# 容器名称。# 例如elasticsearch_8.18.8_devcontainer_name: elasticsearch_${ES_VERSION}_${ENV}# 加入当前环境的公共 Docker 网络。networks: - env_network# 端口映射。## HTTP# 宿主机 ${ES_PORT_HTTP} - 容器 9200## Transport# 宿主机 ${ES_PORT_TRANSPORT} - 容器 9300ports: -${ES_PORT_HTTP}:9200-${ES_PORT_TRANSPORT}:9300# Elasticsearch 运行参数。environment:# 单节点模式。discovery.type: single-node# elastic 内置用户密码。ELASTIC_PASSWORD:${ES_PASSWORD}# 开启 Elasticsearch 安全认证。xpack.security.enabled:true# 磁盘水位配置避免磁盘空间不足时过早触发保护。cluster.routing.allocation.disk.watermark.low:90%cluster.routing.allocation.disk.watermark.high:95%cluster.routing.allocation.disk.watermark.flood_stage:97%######################################################### 持久化目录########################################################## Elasticsearch 需要持久化的目录统一放在## elasticsearch/volumes/## 所有宿主机路径均使用相对路径。## 相对路径解析规则## ./volumes/xxx## 相对于当前 docker-compose.yml 所在目录解析。## 当前 Compose 文件## dev/elasticsearch/docker-compose.yml## 因此## ./volumes/data## 实际对应## dev/elasticsearch/volumes/data## 同理## ./volumes/config# ./volumes/data# ./volumes/logs# ./volumes/plugins## 分别对应当前 elasticsearch 目录下的持久化目录。## 不使用 ${ENV} 拼接路径环境隔离由上层目录完成## dev/elasticsearch/# test/elasticsearch/# prod/elasticsearch/#########################################################volumes:# Elasticsearch 配置文件。# 宿主机相对路径# ./volumes/config## 容器路径# /usr/share/elasticsearch/config## 保存 Elasticsearch 配置、JVM 配置、日志配置、# 证书及其他需要持久化的配置文件。- ./volumes/config:/usr/share/elasticsearch/config# Elasticsearch 核心持久化数据。# 宿主机相对路径# ./volumes/data## 容器路径# /usr/share/elasticsearch/data## 保存索引、Shard、Lucene 数据及集群持久化状态。- ./volumes/data:/usr/share/elasticsearch/data# Elasticsearch 运行日志。# 宿主机相对路径# ./volumes/logs## 容器路径# /usr/share/elasticsearch/logs- ./volumes/logs:/usr/share/elasticsearch/logs# Elasticsearch 第三方插件。# 宿主机相对路径# ./volumes/plugins## 容器路径# /usr/share/elasticsearch/plugins## 插件必须与 ES_VERSION 保持兼容。- ./volumes/plugins:/usr/share/elasticsearch/plugins######################################################### 健康检查########################################################healthcheck:# 使用 elastic 用户访问 Elasticsearch HTTP API。test:[CMD-SHELL,curl -sf -u elastic:${ES_PASSWORD}http://localhost:9200 /dev/null || exit 1]# 每 10 秒检查一次。interval: 10s# 单次检查超时时间。timeout: 5s# 连续失败 30 次后标记为 unhealthy。retries:30# 启动阶段给予 300 秒宽限时间。start_period: 300s# 容器异常退出后自动重启。restart: unless-stopped######################################################### 容器标签########################################################labels:# 当前环境。env:${ENV}# Elasticsearch 版本。version:${ES_VERSION}# 服务名称。service: elasticsearch_${ENV}执行在.env同级目录下执行dockercompose --env-file .env-felasticsearch/docker-compose.yml up-d各参数含义如下参数含义docker compose执行 Docker Compose--env-file .env指定环境变量文件为.env-f指定 Compose 配置文件elasticsearch/docker-compose.yml要使用的 Compose 配置文件路径up创建并启动服务-d后台运行Detached Mode启动后立即返回命令行浏览器访问http://localhost:9200/IK 分词器安装进入容器安装插件dockerexec-itelasticsearch_8.18.8_devbash执行安装IK分词器命令elasticsearch-plugininstall--batchhttps://release.infinilabs.com/analysis-ik/stable/elasticsearch-analysis-ik-8.18.8.zip安装 IK 分词器后必须重启 Elasticsearch 容器才能让 Elasticsearch 加载这个插件。dockerrestart elasticsearch_8.18.8_dev测试 IK 分词器curl-uelastic:Pass8520-XPOSThttp://localhost:9200/_analyze-HContent-Type: application/json-d{\analyzer\:\ik_smart\,\text\:\中华人民共和国国歌\}
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门