docker-compose部署ES

docker-compose文件如下:

复制代码
version: '3'
services:
  elasticsearch:
    image: elasticsearch:8.15.0
    container_name: elasticsearch
    restart: always
    environment:
      - ELASTIC_PASSWORD=a8jxasll23mnasd1
    ports:
      - "9200:9200"
      - "9200:9300"
    volumes:
      - "./elasticsearch-8.15.0/data:/usr/share/elasticsearch/data"
      - "./elasticsearch-8.15.0/logs:/usr/share/elasticsearch/logs"
      - "./elasticsearch-8.15.0/plugins:/usr/share/elasticsearch/plugins"
      - "./elasticsearch-8.15.0/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml"
      - "./elasticsearch-8.15.0/certs:/usr/share/elasticsearch/config/certs"

挂卷需要需要准备四个目录,一套证书(可通过openssl命令生成)、一个配置文件。

先创建一个名为 elasticsearch-8.15.0 的文件夹,和docker-compose.yml放在同一个目录下。

在elasticsearch-8.15.0文件夹内创建certs,里面放置证书文件。

在elasticsearch-8.15.0文件夹内创建conf,conf文件夹创建elasticsearch.yml文件,内容为:

复制代码
#集群名称 所有节点名称一致 (集群/单机配置)
cluster.name: bin-es-clusters

#当前该节点的名称,每个节点不能重复scan-es-node-1,scan-es-node-2,scan-es-node-3...
# (集群/单机配置)
node.name: bin-es-node-1

#当前该节点是不是有资格竞选主节点 (集群配置,单机注释)
#node.master: true

#当前该节点是否存储数据 (集群配置,单机注释)
#node.data: true

#设置为公开访问 (集群/单机配置)
network.host: 0.0.0.0

#设置其它节点和该节点交互的本机器的ip地址 (集群/单机配置)
# network.publish_host: 192.168.108.83

# 设置映射端口(集群/单机配置)
http.port: 9200

# 内部节点之间沟通端口 (集群配置,单机注释)
#transport.tcp.port: 9300

#支持跨域访问 (集群/单机配置)
http.cors.enabled: true
http.cors.allow-origin: "*"

#安全控制 (集群/单机配置)
#开启es密码配置及https访问
xpack.security.enabled: true
#es从8.x开始,如果要开启es密码配置,下面配置也必须设置为true,此时还需要配置证书
xpack.security.transport.ssl.enabled: true
#开启https访问
xpack.security.http.ssl.enabled: false
xpack.security.http.ssl.key: /usr/share/elasticsearch/config/certs/server.key
xpack.security.http.ssl.certificate: /usr/share/elasticsearch/config/certs/server.crt
xpack.security.http.ssl.certificate_authorities: [ "/usr/share/elasticsearch/config/certs/server.crt" ]
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.key: /usr/share/elasticsearch/config/certs/server.key
xpack.security.transport.ssl.certificate: /usr/share/elasticsearch/config/certs/server.crt
xpack.security.transport.ssl.certificate_authorities: [ "/usr/share/elasticsearch/config/certs/server.crt" ]

#若只需要配置密码,不需要https访问,则如下配置即可
#xpack.security.enabled: true
#xpack.security.transport.ssl.enabled: true
#xpack.security.transport.ssl.key: /usr/share/elasticsearch/config/certs/server.key
#xpack.security.transport.ssl.certificate: /usr/share/elasticsearch/config/certs/server.crt

#配置集群的主机地址 (集群配置,单机注释)
#discovery.seed_hosts: ["192.168.xxx.xxx"]
#初始主节点,使用一组初始的符合主条件的节点引导集群 (集群/单机配置)
cluster.initial_master_nodes: ["bin-es-node-1"]
#节点等待响应的时间,默认值是30秒,增加这个值,从一定程度上会减少误判导致脑裂 (集群配置,单机注释)
#discovery.zen.ping_timeout: 30s

#配置集群最少主节点数目,通常为 (可成为主节点的主机数目 / 2) + 1 (集群配置,单机注释)
#discovery.zen.minimum_master_nodes: 1

#禁用交换内存,设置true 提升效率 (集群/单机配置)
bootstrap.memory_lock: false

# http传输内容的最大容量 (集群/单机配置)
http.max_content_length: 200mb

在elasticsearch-8.15.0文件夹内创建data文件夹;

在elasticsearch-8.15.0文件夹内创建plugins文件夹;

创建完成四个文件夹后,执行:

复制代码
chmod -R 777 ./elasticsearch-8.15.0;

启动:docker-compose up -d。

遇到起不来的问题,执行:

复制代码
sysctl -w vm.max_map_count=262144;

如果仍有报错:{"@timestamp":"2025-10-24T09:01:30.687Z", "log.level":"ERROR", "message":"node validation exception\n[1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch. For more information see [https://www.elastic.co/guide/en/elasticsearch/reference/8.15/bootstrap-checks.html\]\nbootstrap check failure [1] of [1]: max file descriptors [1024] for elasticsearch process is too low, increase to at least [65535]; for more information see [https://www.elastic.co/guide/en/elasticsearch/reference/8.15/_file_descriptor_check.html\]", "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.server","process.thread.name":"main","log.logger":"org.elasticsearch.bootstrap.Elasticsearch","elasticsearch.node.name":"bin-es-node-1","elasticsearch.cluster.name":"bin-es-clusters"}

修改docker-compose的配置文件,新增:

关键配置:提高文件描述符限制

ulimits:

nofile:

soft: 65535

hard: 65535

即docker-compose.yml文件为:

复制代码
version: '3'
services:
  elasticsearch:
    image: elasticsearch:8.15.0
    container_name: elasticsearch
    restart: always
    environment:
      - ELASTIC_PASSWORD=a8jxasll23mnasd1
    ports:
      - "9200:9200"
      - "9200:9300"
    volumes:
      - "./elasticsearch-8.15.0/data:/usr/share/elasticsearch/data"
      - "./elasticsearch-8.15.0/logs:/usr/share/elasticsearch/logs"
      - "./elasticsearch-8.15.0/plugins:/usr/share/elasticsearch/plugins"
      - "./elasticsearch-8.15.0/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml"
      - "./elasticsearch-8.15.0/certs:/usr/share/elasticsearch/config/certs"
    # 关键配置:提高文件描述符限制
    ulimits:
      nofile:
        soft: 65535
        hard: 65535
相关推荐
OtIo TALL2 小时前
Java进阶(ElasticSearch的安装与使用)
java·elasticsearch·jenkins
Elastic 中国社区官方博客6 小时前
Jina embeddings v3 现已在 Gemini Enterprise Agent Platform Model Garden 上可用
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索·jina
前端若水7 小时前
Git 撤销与恢复完全指南(超级详细版)
大数据·git·elasticsearch
tonydf7 小时前
日志模块该如何设计
后端·elasticsearch
前端若水7 小时前
Git 可以做的所有操作(完整分类)
大数据·git·elasticsearch
Elasticsearch7 小时前
我们如何构建 Elasticsearch simdvec,使向量搜索成为世界上最快之一
elasticsearch
搬砖天才、8 小时前
es数据备份
大数据·elasticsearch·jenkins
aXin_ya8 小时前
微服务第六天 es继续了解
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客8 小时前
使用 Elastic Observability 和 MCP 的 Agentic 驱动 Kubernetes 调查
数据库·elasticsearch·搜索引擎·云原生·容器·kubernetes·全文检索
前端若水8 小时前
Git 仓库管理命令完全指南(超级详细版)
大数据·git·elasticsearch