系列回顾与引言 #
在我们的 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 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
执行:
# 启动默认配置 (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
命令可以查看所有支持的功能:
curl -fsSL http://get.infini.cloud/start-local | sh -s -- help
以下是一些最常用的命令和选项:
命令 (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
: Easysearchadmin
用户初始密码 (默认ShouldChangeme123.
)。--services s1[,s2,...]
: 指定要启动的服务 (可选值:console
,easysearch
)。如果未指定,默认启动两者。--metrics-agent
: 启用 Easysearch 指标收集代理。-wd PATH
,--work-dir PATH
: 自定义工作目录,替代默认的./startlocal
。
实际操作示例 #
让我们通过几个示例来感受 start-local
的便捷:
1. 启动一个标准的开发环境 (Console + 1 个 Easysearch 节点,开启指标)
curl -fsSL http://get.infini.cloud/start-local | sh -s
脚本会自动完成所有后台工作:检查依赖、确定版本、创建工作目录、生成配置文件、复制初始配置、生成 docker-compose.yml
,最后启动服务并打印访问地址。
2. 启动一个 3 节点的 Easysearch 集群,并指定版本和密码
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. 查看所有服务的日志
curl -fsSL http://get.infini.cloud/start-local | sh -s -- logs
4. 停止运行环境(慎重操作)
curl -fsSL http://get.infini.cloud/start-local | sh -s -- down
这将停止运行的所有容器。
4. 删除运行环境(慎重操作)
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 脚本能成为你日常工作中得力的助手!如果你有任何建议或发现问题,欢迎通过项目仓库反馈。