Docker Compose 本地环境搭建:elasticsearch

Docker Compose 本地环境搭建:elasticsearch

  • [🔗 前言:Docker Compose 本地环境搭建相关文章](#🔗 前言:Docker Compose 本地环境搭建相关文章)
  • [🐳 Docker Compose 本地环境搭建:elasticsearch](#🐳 Docker Compose 本地环境搭建:elasticsearch)
    • [📚 目录结构设计](#📚 目录结构设计)
    • [📄 docker-compose.yml](#📄 docker-compose.yml)
    • [🚀 启动方式](#🚀 启动方式)
    • [✂️ IK 分词器安装](#✂️ IK 分词器安装)
    • [🌐 访问测试](#🌐 访问测试)

🔗 前言:Docker Compose 本地环境搭建相关文章


🐳 Docker Compose 本地环境搭建:elasticsearch


📚 目录结构设计

推荐使用如下结构:

bash 复制代码
infra/
├── .env

├── mysql/
│   └── docker-compose.yml

├── redis/
│   └── docker-compose.yml

├── elasticsearch/
│   └── docker-compose.yml

├── skywalking/
│   └── docker-compose.yml

├── nacos/
│   └── docker-compose.yml

📄 docker-compose.yml

bash 复制代码
# =========================================================
# 用于构建环境:Elasticsearch
# 宿主机挂载目录、端口、密码、版本号、环境后缀均通过 .env 文件管理
# =========================================================

###########################################################
# 网络配置
###########################################################
networks:
  env_network: # 内部网络标识固定
    driver: bridge
    name: ${NETWORK_NAME}        # Docker 实际网络名动态生成
    ipam:
      config:
        - subnet: ${NETWORK_SUBNET}  # 子网从 .env 获取

###########################################################
# 卷(Volume)配置
###########################################################
volumes:
  # Elasticsearch
  es_data:
    driver: local
    driver_opts:
      type: none
      device: ${HOST_VOLUME}/${ENV}/ElasticSearch8/data
      o: bind
  es_logs:
    driver: local
    driver_opts:
      type: none
      device: ${HOST_VOLUME}/${ENV}/ElasticSearch8/logs
      o: bind

###########################################################
# 服务定义
###########################################################
services:
  # Elasticsearch
  elasticsearch:
    image: elasticsearch:${ES_VERSION}
    container_name: elasticsearch_${ES_VERSION}_${ENV}
    networks:
      - env_network
    ports:
      - "${ES_PORT_HTTP}:9200"
      - "${ES_PORT_TRANSPORT}:9300"
    environment:
      discovery.type: single-node
      ELASTIC_PASSWORD: ${ES_PASSWORD}
      xpack.security.enabled: "true"
      # 防止再被 flood-stage 锁死
      cluster.routing.allocation.disk.watermark.low: "90%"
      cluster.routing.allocation.disk.watermark.high: "95%"
      cluster.routing.allocation.disk.watermark.flood_stage: "97%"
    volumes:
      - es_data:/usr/share/elasticsearch/data
      - es_logs:/usr/share/elasticsearch/logs
    healthcheck:
      test:
        [
          "CMD-SHELL",
          "curl -sf -u elastic:${ES_PASSWORD} http://localhost:9200 >/dev/null || exit 1"
        ]
      # 两次健康检查之间的间隔
      interval: 10s
      # 单次健康检查的最大执行时间
      timeout: 5s
      # 允许连续失败多少次
      retries: 30
      # 启动宽限期,在这段时间内,健康检查失败不会被算作失败,成功直接 healthy
      start_period: 300s
    restart: unless-stopped
    labels:
      env: ${ENV}
      version: ${ES_VERSION}
      service: elasticsearch_${ENV}

🚀 启动方式

.env 同级目录下执行

bash 复制代码
docker compose --env-file .env -f elasticsearch/docker-compose.yml up -d
  • -d 表示 后台运行
  • Compose 会:
    • 自动读取 .env 文件里的变量
    • 根据 docker-compose.yml 配置创建网络、卷和容器
    • 容器名、端口、挂载目录都会根据 .env 替换

✂️ IK 分词器安装

进入容器安装插件(避免重启重复安装):

bash 复制代码
docker exec -it elasticsearch_8.18.8_dev bash

执行安装 IK分词器 命令

bash 复制代码
elasticsearch-plugin install --batch https://release.infinilabs.com/analysis-ik/stable/elasticsearch-analysis-ik-8.18.8.zip

🌐 访问测试

相关推荐
2301_7803039010 分钟前
DevSecOps建设之自动化集成与部署 Jenkins教程和使用案例
运维·自动化·jenkins
承渊政道2 小时前
OneNav书签导航实操:极空间Docker部署、分类整理与公网访问
运维·docker·内网穿透·cpolar·nas·onenav·轻量级部署
oioihoii3 小时前
CentOS运行Teemii实操:Docker Compose部署、漫画导入与公网阅读
linux·docker·centos
望江东浪11 小时前
我的 Claude Code 效率工具全套配置分享
大数据·elasticsearch·搜索引擎
AAA@峥17 小时前
容器数据不丢失:Docker 分层存储 + Volume 共享、备份迁移完整指南
运维·docker·容器
十年磨一剑~19 小时前
docker 为何每次 docker tag才能 docker push
docker·容器·eureka
梦梦代码精20 小时前
LikeShop 前后端架构升级对比总白皮书——从传统商城架构到高性能多端统一体系
docker·架构·开源
Z_W_H_21 小时前
minikube start --driver=docker --memory=4000mb出现PROVIDER_DOCKER_NEWGRP
java·docker·minikube
江湖有缘1 天前
基于Docker环境部署tillywork开源工作管理工具
docker·容器·开源
辉的技术笔记1 天前
Dify 配完了怎么知道对不对?5 个关键指标 + 诊断命令
docker