Skip to content

使用 Docker Compose 安装 Elasticsearch 8.15.0

以下是安装 Elasticsearch 8.15.0 的 docker-compose.yml 文件示例:

yaml
version: '3'

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
      - xpack.security.enabled=true
      - ELASTIC_PASSWORD=123456
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./es_data:/usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"
    networks:
      - elastic

  kibana:
    image: docker.elastic.co/kibana/kibana:8.15.0
    container_name: kibana
    ports:
      - "5601:5601"
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
      - ELASTICSEARCH_USERNAME=kibana_system
      - ELASTICSEARCH_PASSWORD=123456
    depends_on:
      - elasticsearch
    networks:
      - elastic
networks:
  elastic:
    driver: bridge
version: '3'

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
      - xpack.security.enabled=true
      - ELASTIC_PASSWORD=123456
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./es_data:/usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"
    networks:
      - elastic

  kibana:
    image: docker.elastic.co/kibana/kibana:8.15.0
    container_name: kibana
    ports:
      - "5601:5601"
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
      - ELASTICSEARCH_USERNAME=kibana_system
      - ELASTICSEARCH_PASSWORD=123456
    depends_on:
      - elasticsearch
    networks:
      - elastic
networks:
  elastic:
    driver: bridge

docker exec -it elasticsearch bash

在容器内执行:

bin/elasticsearch-reset-password -u kibana_system -i

输入新密码(建议用123456保持一致性)

使用说明

  1. 将上述内容保存为 docker-compose.yml 文件

  2. 启动 Elasticsearch 服务:

    bash
    docker-compose up -d
    docker-compose up -d
  3. 验证 Elasticsearch 是否正常运行:

    bash
    curl http://localhost:9200
    curl http://localhost:9200

安全配置(可选)

对于生产环境,建议启用安全功能。修改环境变量如下:

yaml
environment:
  - discovery.type=single-node
  - bootstrap.memory_lock=true
  - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
  - xpack.security.enabled=true
  - xpack.security.http.ssl.enabled=true
environment:
  - discovery.type=single-node
  - bootstrap.memory_lock=true
  - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
  - xpack.security.enabled=true
  - xpack.security.http.ssl.enabled=true

首次启动后,执行以下命令获取默认密码:

bash
docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic

自定义配置

如果需要自定义配置,可以创建一个 elasticsearch.yml 文件并通过卷挂载:

yaml
volumes:
  - ./config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
volumes:
  - ./config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

注意事项

  1. -Xms1g -Xmx1g 设置了 JVM 堆内存大小,请根据服务器实际情况调整
  2. 生产环境不建议使用 single-node 发现类型