Docker Compose 安装Elasticsearch8和kibana和mysql8和redis5 并重置密码的经验与总结

在现代开发中,Elasticsearch 是一个非常受欢迎的分布式搜索引擎,广泛应用于日志收集、数据分析和实时搜索等场景。由于 Elasticsearch 提供强大的查询和分析功能,它成为了许多企业架构的核心部分。通过 Docker 和 Docker Compose 安装 Elasticsearch 可以大大简化部署和管理流程。本文将介绍如何使用 Docker Compose 安装 Elasticsearch,并重置本地用户的密码。

1. 环境准备

在开始安装之前,确保你的系统上已经安装了 Docker 和 Docker Compose。以下是安装步骤:

安装 Docker 和 Docker Compose

如果已经安装了 Docker 和 Docker Compose,可以跳过这一步。

2. 使用 Docker Compose 安装 Elasticsearch

2.1 创建 `docker-compose.yml` 配置文件

为了简化 Elasticsearch 服务的管理,我们可以使用 Docker Compose 来定义和启动服务。创建一个 `docker-compose.yml` 文件,其中定义了 Elasticsearch 服务。```yaml

复制代码
networks:
  minutel_docker_net: 
    driver: bridge

services:
  elasticsearch:
    container_name: elasticsearch             # 容器名为'elasticsearch'
    image: elasticsearch:8.13.4     # elasticsearch:7.17.1
    restart: unless-stopped                           # 指定容器退出后的重启策略为始终重启,但是不考虑在Docker守护进程启动时就已经停止了的容器
    volumes:                                  # 数据卷挂载路径设置,将本机目录映射到容器目录
      - "./data/elasticsearch/config:/usr/share/elasticsearch/config"
      - "./data/elasticsearch/data:/usr/share/elasticsearch/data"
      - "./data/elasticsearch/logs:/usr/share/elasticsearch/logs"
      - "./data/elasticsearch/plugins:/usr/share/elasticsearch/plugins"
    environment:                              # 设置环境变量,相当于docker run命令中的-e
      - "TZ=Asia/Shanghai"
      - "LANG=en_US.UTF-8"
      - "discovery.type=single-node"
      - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
    ports:
      - "9200:9200"
      - "9300:9300"
    networks:
      - minutel_docker_net

  kibana:
    container_name: kibana
    image: kibana:8.13.4       # kibana:7.17.1
    restart: unless-stopped
    volumes:
      - "./data/kibana/config/:/usr/share/kibana/config/"
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch
    links:
      - elasticsearch
    networks:
      - minutel_docker_net

  mysql:
    image: mysql:8.0
    container_name: mysql8
    environment:
      MYSQL_ROOT_PASSWORD: 132134
    volumes:
      - "./data/mysql/data:/var/lib/mysql"
      - "./data/mysql/log:/var/log/mysql"
    networks:
      - minutel_docker_net
    ports:
      - "3306:3306"
  redis:
    image: redis:5.0
    container_name: redis5
    networks:
      - minutel_docker_net
    ports:
      - "6379:6379"

```

  • **image**:指定使用的 Elasticsearch 镜像版本,这里使用的是 `8.6.0`。

  • **container_name**:容器的名称,这里指定为 `elasticsearch`。

  • **environment**:环境变量设置:

  • `discovery.type=single-node`:表示启用单节点模式,不需要集群。

  • `ELASTIC_PASSWORD=changeme`:设置 Elasticsearch 默认超级用户 `elastic` 的密码为 `changeme`。

  • **ports**:将容器的 9200 端口和 9300 端口分别映射到宿主机的 9200 和 9300 端口,这样我们就能通过 `localhost:9200` 访问 Elasticsearch 服务。

  • **volumes**:使用 Docker 卷来持久化 Elasticsearch 数据,防止容器停止后数据丢失。

  • **networks**:指定使用 `bridge` 网络驱动,确保容器与宿主机之间的网络通信。

2.2 启动 Elasticsearch 服务

创建好 `docker-compose.yml` 文件后,使用以下命令启动 Elasticsearch 服务:

(注意,由于dcoker的使用需要开启vpn,自行处理vpn问题,否则报错如下)

```bash

docker-compose up -d

``

这条命令会启动所有定义在 `docker-compose.yml` 文件中的服务,并在后台运行。稍等片刻,Elasticsearch 服务就会启动起来。

2.3 检查服务是否启动成功

启动完毕后,我们可以通过访问 `http://localhost:9200` 来确认 Elasticsearch 服务是否正常运行。你可以使用以下命令:

```bash

curl -u elastic:changeme http://localhost:9200

```

如果一切正常,你将看到类似如下的响应:

```json

{

"name" : "elasticsearch",

"cluster_name" : "elasticsearch",

"cluster_uuid" : "abc123",

"version" : {

"number" : "8.6.0",

"build_flavor" : "default",

"build_type" : "deb",

"build_hash" : "abc123",

"build_date" : "2025-04-18T12:00:00.000Z",

"build_snapshot" : false,

"lucene_version" : "8.9.0",

"minimum_wire_compatibility_version" : "8.6.0",

"minimum_index_compatibility_version" : "8.6.0"

},

"tagline" : "You Know, for Search"

}

```

3. 重置 Elasticsearch 用户密码

3.1 进入 Elasticsearch 容器

Elasticsearch 提供了一个 `elasticsearch-reset-password` 工具来帮助用户重置密码。为了执行这个工具,首先需要进入容器内部。

```bash

docker exec -it elasticsearch /bin/bash

```

3.2 使用 `elasticsearch-reset-password` 工具

进入容器后,使用以下命令来重置默认的 `elastic` 用户密码:

```bash

bin/elasticsearch-reset-password -u elastic

```

此命令会提示你是否确认重置密码,输入 `y` 确认后,系统会自动生成一个新的密码并显示在控制台中。记住这个密码,因为后续连接 Elasticsearch 时需要用到。

3.3 退出容器并测试新密码

重置密码后,可以退出容器:

```bash

exit

```

然后,使用新的密码通过以下命令访问 Elasticsearch 服务:

```bash

curl -u elastic:<new-password> http://localhost:9200

```

将 `<new-password>` 替换为重置后显示的密码。如果成功连接,您将看到类似之前的响应信息。

4. 总结

通过 Docker Compose 安装 Elasticsearch 并重置密码的过程非常简便。利用 Docker Compose,您可以轻松管理 Elasticsearch 服务,快速启动和停用服务,并通过配置文件灵活地定制容器环境。

在安装和配置过程中,我们通过创建 `docker-compose.yml` 文件来定义服务的配置,简化了部署步骤。通过容器内部的 `elasticsearch-reset-password` 工具,我们能够方便地重置用户密码,确保安全性。

使用 Docker 和 Docker Compose 安装 Elasticsearch 不仅提高了开发效率,还能让我们在本地环境中轻松测试和开发基于 Elasticsearch 的应用程序。

相关推荐
用户0328472220703 小时前
如何搭建本地yum源(上)
运维
武子康4 小时前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
Elasticsearch1 天前
如何通过 Claude Code 来写入 CSV 数据到 Elasticsearch
elasticsearch
得物技术2 天前
从埋点需求到规则资产:Hermes Agent 重构得物数仓工作流
大数据·llm·ai编程
久美子2 天前
AI驱动数仓建设的Harness工程实践——本体建模、知识分层与上下文工程
大数据
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
大志哥1233 天前
ES和Logstash日志链路系统上线后遭遇切片爆炸(解决)
大数据·elasticsearch
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工3 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信