--- title: "一键启动:使用 start-local 脚本轻松管理 INFINI Console 与 Easysearch 本地环境" date: 2025-06-15 lastmod: 2025-06-15 description: "在前两篇手动和 Docker Compose 搭建的基础上,本文介绍如何使用 start-local 脚本一键管理持久化的 INFINI Console 与 Easysearch 环境。" tags: ["Docker", "Easyserach", "Console", "DevOps", "Automation"] summary: "系列回顾与引言 # 在我们的 INFINI 本地环境搭建系列博客中: 第一篇《 搭建持久化的 INFINI Console 与 Easysearch 容器环境》,我们深入探讨了如何使用基础的 docker run 命令,一步步构建起 Console 和 Easysearch 服务,并重点解决了数据持久化的问题。 第二篇《 使用 Docker Compose 简化 INFINI Console 与 Easysearch 环境搭建》,我们学习了如何利用 Docker Compose 的声明式配置,将多容器应用的定义和管理变得更加简洁高效。 虽然 Docker Compose 已经极大地提升了便利性,但在实际的开发和测试流程中,我们可能还需要处理版本选择、初始配置复制、多节点配置、指标采集开启等更细致的需求。为了进一步封装这些复杂性,提供真正的一键式体验,我们精心打造了一个强大的 Shell 脚本 start-local 。 本篇文章将带你领略 start-local 的魅力,看看它是如何将 Console 和 Easysearch (本文仍以 Console 1.29.6 和 Easysearch 1.13.0 为例) 的本地环境搭建与管理提升到一个全新的便捷高度——只需一行命令,即可拥有一个功能完备、数据持久的本地 INFINI Console 运行环境。 start-local:您的 INFINI Console 本地环境瑞士军刀 # start-local 脚本(灵感来源于 elastic/start-local)集成了环境搭建的诸多最佳实践,旨在提供极致的易用性。它在后台仍然依赖 Docker 和 Docker Compose,但为用户屏蔽了底层的复杂配置细节。" --- ## 系列回顾与引言 在我们的 INFINI 本地环境搭建系列博客中: 1. 第一篇《[搭建持久化的 INFINI Console 与 Easysearch 容器环境](/blog/2025/console-easysearch-with-docker)》,我们深入探讨了如何使用基础的 `docker run` 命令,一步步构建起 Console 和 Easysearch 服务,并重点解决了数据持久化的问题。 2. 第二篇《[使用 Docker Compose 简化 INFINI Console 与 Easysearch 环境搭建](/blog/2025/console-easysearch-with-docker-compose)》,我们学习了如何利用 Docker Compose 的声明式配置,将多容器应用的定义和管理变得更加简洁高效。 虽然 Docker Compose 已经极大地提升了便利性,但在实际的开发和测试流程中,我们可能还需要处理版本选择、初始配置复制、多节点配置、指标采集开启等更细致的需求。为了进一步封装这些复杂性,提供真正的一键式体验,我们精心打造了一个强大的 Shell 脚本 [start-local](https://github.com/infinilabs/get.infini.sh/blob/main/start-local.sh) 。 本篇文章将带你领略 `start-local` 的魅力,看看它是如何将 Console 和 Easysearch (本文仍以 Console 1.29.6 和 Easysearch 1.13.0 为例) 的本地环境搭建与管理提升到一个全新的便捷高度——**只需一行命令,即可拥有一个功能完备、数据持久的本地 INFINI Console 运行环境。** ## `start-local`:您的 INFINI Console 本地环境瑞士军刀 `start-local` 脚本(灵感来源于 [elastic/start-local](https://github.com/elastic/start-local))集成了环境搭建的诸多最佳实践,旨在提供极致的易用性。它在后台仍然依赖 Docker 和 Docker Compose,但为用户屏蔽了底层的复杂配置细节。 **核心功能:** - **智能版本管理**:自动获取 INFINI Console 和 Easysearch 的最新稳定版(或你指定的版本)作为默认镜像标签。 - **动态配置生成**:根据用户提供的命令行选项(如节点数、密码、版本等)自动生成 `.env` 和 `docker-compose.yml` 文件。 - **初始配置自动处理**:在首次启动或本地配置目录不存在时,自动从 Docker 镜像中提取并设置初始配置文件。 - **一键式生命周期管理**:通过简单的命令 (`up`, `down`, `logs`, `clean`) 管理整个应用的启动、停止、日志查看和彻底清理。 - **持久化内置**:默认将所有关键数据(配置、索引数据、日志)持久化到本地的 `./startlocal` 目录(可配置)。 - **集成 Agent 指标采集**:通过 `--metrics-agent` 选项,轻松启用 Easysearch 的指标收集并自动配置其指向 INFINI Console。 - **跨平台设计**:主要针对 Linux 和 macOS 环境。 ## 如何获取和使用 `start-local` 获取和执行 `start-local` 最便捷的方式是通过 `curl` 将脚本内容直接通过管道传递给 `sh` 执行: ```bash # 启动默认配置 (Console + 1 个 Easysearch 节点) curl -fsSL http://get.infini.cloud/start-local | sh -s # 想要更丰富的体验?试试这个: # 启动 3 个 Easysearch 节点,设置密码,并开启 Agent 指标采集 curl -fsSL http://get.infini.cloud/start-local | sh -s -- up --nodes 3 --password "MyDevPass123." --metrics-agent ``` _(请将 `http://get.infini.cloud/start-local` 替换为脚本的实际官方获取地址)_ `sh -s --` 部分确保脚本从标准输入读取,并且后续参数能正确传递给脚本。 脚本执行后,所有操作文件和持久化数据都会在当前目录下的 `./startlocal` (默认) 子目录中创建和管理。 ## `start-local` 命令和选项概览 通过 `help` 命令可以查看所有支持的功能: ```bash curl -fsSL http://get.infini.cloud/start-local | sh -s -- help ``` {{< asciinema key="/start-local/start-local-help" autoplay="1" speed="2" rows="30" preload="1" >}} 以下是一些最常用的命令和选项: **命令 (`COMMAND`):** - `up`: 核心命令。创建并启动定义的服务。自动处理初始配置。 - `down`: 停止服务,移除容器、网络和相关匿名卷。本地持久化数据不受影响。 - `logs [服务名...]`: 实时查看指定服务或所有服务的日志。 - `clean`: **彻底清理**。执行 `down` 后,删除整个工作目录 (`./startlocal` 及其所有内容)。 - `help`: 显示帮助信息。 **常用选项 (`OPTIONS`) (主要用于 `up` 命令):** - `-cv TAG`, `--console-version TAG`: 指定 Console 镜像版本 (例如 `1.29.6`)。 - `-ev TAG`, `--easysearch-version TAG`: 指定 Easysearch 镜像版本 (例如 `1.13.0`)。 - `-n N`, `--nodes N`: Easysearch 节点数量 (默认 1)。 - `-p PASSWORD`, `--password PASSWORD`: Easysearch `admin` 用户初始密码 (默认 `ShouldChangeme123.`)。 - `--services s1[,s2,...]`: 指定要启动的服务 (可选值: `console`, `easysearch`)。如果未指定,默认启动两者。 - `--metrics-agent`: 启用 Easysearch 指标收集代理。 - `-wd PATH`, `--work-dir PATH`: 自定义工作目录,替代默认的 `./startlocal`。 ## 实际操作示例 让我们通过几个示例来感受 `start-local` 的便捷: **1. 启动一个标准的开发环境 (Console + 1 个 Easysearch 节点,开启指标)** ```bash curl -fsSL http://get.infini.cloud/start-local | sh -s ``` {{< asciinema key="/start-local/start-local-up" autoplay="1" speed="2" rows="30" preload="1" >}} 脚本会自动完成所有后台工作:检查依赖、确定版本、创建工作目录、生成配置文件、复制初始配置、生成 `docker-compose.yml`,最后启动服务并打印访问地址。 **2. 启动一个 3 节点的 Easysearch 集群,并指定版本和密码** ```bash curl -fsSL http://get.infini.cloud/start-local | sh -s -- up \ --nodes 3 \ --password "ComplexP@ssw0rd." \ --console-version 1.29.6 \ --easysearch-version 1.13.0 \ --services easysearch,console ``` 脚本会智能处理多节点配置和持久化目录结构。 **3. 查看所有服务的日志** ```bash curl -fsSL http://get.infini.cloud/start-local | sh -s -- logs ``` {{< asciinema key="/start-local/start-local-logs" autoplay="1" speed="2" rows="30" preload="1" >}} **4. 停止运行环境(慎重操作)** ```bash curl -fsSL http://get.infini.cloud/start-local | sh -s -- down ``` 这将停止运行的所有容器。 {{< asciinema key="/start-local/start-local-down" autoplay="1" speed="2" rows="30" preload="1" >}} **4. 删除运行环境(慎重操作)** ```bash curl -fsSL http://get.infini.cloud/start-local | sh -s -- clean ``` 这将移除所有相关的 Docker 资源以及本地的 `./startlocal` 目录。 ## 持久化:数据安全无忧 `start-local` 脚本的核心设计之一就是确保数据的持久化。所有重要的配置、数据和日志都会映射到宿主机的 `./startlocal` (或你通过 `-wd` 指定的) 目录下的结构化子目录中: - **Console**: `./startlocal/console/{config,data,logs}/` - **Easysearch (单节点)**: `./startlocal/easysearch/{config,data,logs}/` - **Easysearch (多节点)**: `./startlocal/easysearch/node-X/{config,data,logs}/` 这意味着你可以随时 `down` 和 `up` 你的环境,而不用担心丢失任何工作。 ## 访问服务 启动成功后,脚本会打印出访问地址: - **INFINI Console**: `http://localhost:9000` (默认主机端口) - **INFINI Easysearch**: `https://localhost:9200` (默认主机端口,用户 `admin`,密码为你设置的或默认值) ## 总结:从复杂到简单,专注核心价值 从繁琐的 `docker run` 命令,到结构化的 `docker-compose.yml`,再到如今便捷的 `start-local` 脚本,我们一步步简化了 INFINI 本地环境的搭建和管理过程。`start-local` 将所有底层的复杂性封装起来,让你能够通过一行命令就拥有一个功能齐全、数据持久的本地环境,从而更专注于应用本身的功能测试、开发和学习。 这正是良好工具的价值所在——让复杂的事情变简单,让我们能更高效地创造。 希望这个 [start-local](https://github.com/infinilabs/get.infini.sh/blob/main/start-local.sh) 脚本能成为你日常工作中得力的助手!如果你有任何建议或发现问题,欢迎通过项目仓库反馈。