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

🌐 访问测试

相关推荐
手揽回忆怎么睡2 小时前
低负载构建版 Docker/WSL 配置,把宿主机卡顿压到最低
运维·docker·容器
rADu REME10 小时前
探索Spring Cloud Config:构建高可用的配置中心
大数据·elasticsearch·搜索引擎
eRTE XFUN13 小时前
docker 安装 mysql
mysql·adb·docker
Elastic 中国社区官方博客13 小时前
Elastic Security、Observability 和 Search 现在在你的 AI 工具中提供交互式 UI
大数据·运维·人工智能·elasticsearch·搜索引擎·安全威胁分析·可用性测试
eEKI DAND14 小时前
对Docker部署的MySQL中的数据进行备份恢复
mysql·docker·容器
东北甜妹14 小时前
Docker 瘦身
阿里云·docker·eureka
旷世奇才李先生15 小时前
Docker实战:容器化部署与Docker Compose集群管理(附企业级案例)
spring cloud·docker·eureka
夜瞬16 小时前
Git工作流程与常用指令——从本地开发到远程协作
大数据·git·elasticsearch
Sirius Wu19 小时前
Docker 镜像的构建、打包、变更、再次打包全流程
运维·docker·容器