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
相关推荐
java_logo6 小时前
Docker 部署 Elasticsearch 全流程手册
大数据·运维·mongodb·elasticsearch·docker·容器
熟悉的新风景8 小时前
window安装Elasticsearch(es)
大数据·elasticsearch·jenkins
周杰伦_Jay9 小时前
【Elasticsearch 全解析】分布式搜索引擎的原理、实践与优化
大数据·分布式·elasticsearch·架构·开源·1024程序员节
会飞的小蛮猪16 小时前
ELK运维之路(异常日志告警)
elasticsearch·自动化运维·logstash
Elastic 中国社区官方博客1 天前
介绍 Elastic 的 Agent Builder - 9.2
大数据·运维·人工智能·elasticsearch·搜索引擎·ai·全文检索
xxxxxxllllllshi1 天前
【Elasticsearch查询DSL API完全指南:从入门到精通】
java·大数据·elasticsearch·搜索引擎·面试·全文检索·jenkins
半梦半醒*1 天前
ELK1——elasticsearch
linux·运维·数据仓库·elasticsearch·centos
白帽子凯哥哥1 天前
SpringBoot + Elasticsearch实战:从零构建高性能搜索与数据分析平台
大数据·spring boot·后端·elasticsearch·搜索引擎·性能优化·聚合查询
会飞的小蛮猪2 天前
ELK运维之路(使用Logstatsh对日志进行处理综合案例)
elasticsearch·自动化运维·logstash