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

Docker Compose 安装 Elasticsearch 并重置密码的总结

在现代开发中,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"

perl 复制代码
- **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问题,否则报错如下)

![image.png](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/45bf8a49885944cc82eec7817f31f5ef~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgMzYwX2dvX3BocA==:q75.awebp?rk3s=f64ab15b&x-expires=1745560177&x-signature=r5JWGPDvuosJ3iGsIm%2BTmc3mWKA%3D)

```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
 或者
docker logs <container_name_or_id> | grep "Password for the elastic user"

3.2 使用 elasticsearch-reset-password 工具

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

bash 复制代码
bin/elasticsearch-reset-password -u elastic
或者
docker exec -it <container_name> /usr/share/elasticsearch/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 的应用程序。

相关推荐
都叫我大帅哥38 分钟前
Docker Swarm 部署方案
后端
都叫我大帅哥41 分钟前
在Swarm中部署Nacos并配置外部MySQL
后端
熏鱼的小迷弟Liu2 小时前
【消息队列】RabbitMQ的基本架构?
面试·架构·rabbitmq
NAGNIP8 小时前
一文搞懂机器学习中的特征降维!
算法·面试
想摆烂的不会研究的研究生8 小时前
每日八股——Redis(1)
数据库·经验分享·redis·后端·缓存
NAGNIP8 小时前
一文搞懂机器学习中的特征构造!
算法·面试
毕设源码-郭学长8 小时前
【开题答辩全过程】以 基于SpringBoot技术的美妆销售系统为例,包含答辩的问题和答案
java·spring boot·后端
追逐时光者9 小时前
精选 10 款 .NET 开源免费、功能强大的 Windows 效率软件
后端·.net
追逐时光者9 小时前
一款开源、免费的 WPF 自定义控件集
后端·.net
源心锁9 小时前
丧心病狂!在浏览器全天候记录用户行为排障
前端·架构