ES编排docker-composer

配置文件和docker-compose.yml在同级目录,docker-compose.yml会自动读取配置文件

启动命令

启动容器 -d 守护方式启动
docker compose up

停止容器 不删除
docker compose stop

停止后删除容器 慎用
docker compose down
  • 配置文件 .env
# docker-compose.yml的配置文件,(全局变量)
# ES版本,与ik分词器和kibana版本一致
ES_VERSION=8.19.6
# ES本机端口映射
ES_PORT=9200
# ES本地数据目录,要有读写权限,否则es无法运行
ES_DATA_PATH=./es_data
  • docker-compose.yml
# 网络
networks:
  es-network:
    name: es-network
    driver: bridge

services:
  elasticsearch:
    image: elasticsearch:${ES_VERSION}
    container_name: es01
    restart: always
    ports:
      # ES本机端口映射
      - "${ES_PORT}:9200"
    environment:
      # 单节点
      - discovery.type=single-node
      # 关闭安全认证
      - xpack.security.enabled=false
      # 关闭ssl
      - xpack.security.http.ssl.enabled=false
      # 避免内存不足问题 官方建议 Xms(初始堆内存大小)和 Xmx(最大堆内存大小)设为相同值(避免 JVM 动态调整内存大小的开销),且总大小不超过物理内存的 50%
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    deploy:
      resources:
        limits: # 硬限制
          cpus: '2'
          memory: 512m
        reservations: # 软限制
          cpus: '1'
          memory: 256m
    volumes:
      # 数据卷 ES本地数据目录,要有读写权限,否则es无法运行
      - ${ES_DATA_PATH}:/usr/share/elasticsearch/data
    networks:
      - es-network
    entrypoint: [
      # [ 'elasticsearch' ]
      # 用 sh 执行命令"字符串",单引号内的字符串,换行不需要\ 否则命令会报错
      # 1.设置环境变量
      # 2.安装分词插件
      # 3.启动ES
      "/bin/bash", "-c",
      'export ES_HOME=/usr/share/elasticsearch;
      if ! elasticsearch-plugin list | grep -q "analysis-ik"; then
        echo "ik分词器 安装中...";
        elasticsearch-plugin install -b https://get.infini.cloud/elasticsearch/analysis-ik/${ES_VERSION};
        echo "ik分词器 安装成功";
      else
        echo "ik分词器 已安装";
      fi;
      echo "ES 开始启动...";
      exec elasticsearch'
    ]

  kibana:
    image: kibana:${ES_VERSION}
    container_name: kibana01
    restart: always
    ports:
      - "5601:5601"
    environment:
      # 连接ES服务名
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
      # 中文
      - I18N_LOCALE=zh-CN
      # 可访问主机
      - SERVER_HOST=0.0.0.0
    deploy:
      resources:
        limits: # 硬限制
          cpus: '1.5'
          memory: 256m
        reservations: # 软限制
          cpus: '0.5'
          memory: 128m
    networks:
      - es-network
    depends_on:
      # 确保ES启动后再启动Kibana
      - elasticsearch
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容