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

发布于:2025-04-19 ⋅ 阅读:(22) ⋅ 点赞:(0)

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

## 1. 环境准备

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

### 安装 Docker 和 Docker Compose
- **Docker**:[Docker 安装指南](https://docs.docker.com/get-docker/)
- **Docker Compose**:[Docker Compose 安装指南](https://docs.docker.com/compose/install/)

如果已经安装了 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 的应用程序。


网站公告

今日签到

点亮在社区的每一天
去签到