Skip to content

Latest commit

 

History

History
317 lines (227 loc) · 8.15 KB

File metadata and controls

317 lines (227 loc) · 8.15 KB

Nuwax CLI - Docker 服务智能管理工具

Rust Docker License

一个专业的 Docker 服务管理和升级工具,提供完整的容器化服务生命周期管理。

🎯 项目概述

Nuwax CLI 是一个基于 Rust 开发的现代化 Docker 服务管理工具,专门设计用于简化容器化应用的部署、升级、备份和维护工作。通过智能化的升级策略和完善的安全机制,为企业级应用提供可靠的运维支持。

✨ 核心特性

  • 🐋 智能Docker管理:完整的Docker容器生命周期管理,支持启动、停止、重启、健康检查
  • 🔄 多策略升级:支持全量升级和增量升级,自动选择最优升级策略
  • 💾 完整备份系统:升级前自动备份,支持数据和应用配置的完整回滚
  • 🏗️ 跨平台架构:原生支持 x86_64 和 aarch64 架构,自动识别系统类型
  • 📊 实时监控:服务状态监控、健康检查、性能指标收集
  • 🛡️ 安全可靠:事务性升级操作,失败自动回滚,保障服务稳定性
  • ⚡ 高性能:基于 Rust 异步运行时,提供卓越的并发性能
  • 🎨 现代化CLI:直观的命令行界面,丰富的进度显示和状态提示

📁 项目架构

nuwax-cli/
├── 📦 nuwax-cli/          # CLI 主程序
│   ├── src/
│   │   ├── main.rs        # 程序入口点
│   │   ├── cli.rs         # 命令行定义
│   │   ├── app.rs         # 应用主逻辑
│   │   ├── commands/      # 命令处理器
│   │   └── docker_service/ # Docker 服务管理
│   └── Cargo.toml
├── 🔧 client-core/        # 核心业务库
│   ├── src/
│   │   ├── upgrade.rs     # 升级管理
│   │   ├── backup.rs      # 备份系统
│   │   ├── database.rs    # 数据库管理
│   │   ├── api.rs         # API 客户端
│   │   ├── container/     # Docker 操作
│   │   └── sql_diff/      # SQL 差异对比
│   └── Cargo.toml
├── 🖥️ cli-ui/            # Tauri GUI 应用 (开发中)
│   ├── src-tauri/        # Tauri 后端
│   └── src/              # 前端界面
├── 📚 docs/              # 技术文档
├── 📋 spec/              # 设计规范
├── 🗄️ data/              # 数据目录
└── 📄 README.md

🚀 快速开始

环境要求

  • Rust: 1.75+
  • Docker: 20.10+ 和 Docker Compose v2+
  • 操作系统: Windows 10+, macOS 10.15+, Linux (主流发行版)
  • 内存: 最少 512MB 可用内存

安装

从源码构建

# 克隆仓库
git clone https://github.com/soddygo/nuwax-cli.git
cd nuwax-cli

# 构建项目
cargo build --release

# 安装到系统
cargo install --path .

直接运行

# 开发模式运行
cargo run -- --help

# 生产模式运行
./target/release/nuwax-cli --help

基础使用

# 1. 初始化工作环境
nuwax-cli init

# 2. 检查服务状态
nuwax-cli status

# 3. 下载并部署服务
nuwax-cli upgrade

# 4. 启动 Docker 服务
nuwax-cli docker-service start

# 5. 创建备份
nuwax-cli backup

# 6. 查看可用更新
nuwax-cli check-update check

📖 详细功能

Docker 服务管理

# 服务控制
nuwax-cli docker-service start        # 启动服务
nuwax-cli docker-service stop         # 停止服务  
nuwax-cli docker-service restart      # 重启服务
nuwax-cli docker-service status       # 查看状态

# 镜像管理
nuwax-cli docker-service load-images  # 加载镜像
nuwax-cli docker-service arch-info    # 架构信息

# 实用工具
nuwax-cli ducker                      # 启动 Docker TUI

升级和备份

# 升级管理
nuwax-cli upgrade                     # 执行升级
nuwax-cli upgrade --check            # 检查更新
nuwax-cli upgrade --force           # 强制重装

# 备份恢复
nuwax-cli backup                     # 创建备份
nuwax-cli list-backups              # 列出备份
nuwax-cli rollback                  # 回滚恢复
nuwax-cli rollback --force         # 强制回滚

自动化运维

# 自动备份
nuwax-cli auto-backup run           # 立即备份
nuwax-cli auto-backup status        # 备份状态

# 自动升级部署
nuwax-cli auto-upgrade-deploy run   # 自动升级部署
nuwax-cli auto-upgrade-deploy status # 查看配置

工具命令

# SQL 差异对比
nuwax-cli diff-sql old.sql new.sql --old-version 1.0 --new-version 2.0

# 缓存管理
nuwax-cli cache clear               # 清理缓存
nuwax-cli cache status             # 缓存状态

🛠️ 开发指南

开发环境设置

# 1. 安装 Rust 工具链
rustup update stable
rustup component add rustfmt clippy

# 2. 验证依赖
cargo check --workspace

# 3. 运行测试
cargo test --workspace

# 4. 代码格式化
cargo fmt --all

# 5. 静态分析
cargo clippy --workspace -- -D warnings

性能测试

# 运行性能基准测试
cargo bench

# 生成性能报告
cargo bench -- --output-format html

项目依赖管理

项目使用 Cargo workspace 管理多个子模块:

  • nuwax-cli: CLI 接口层,依赖 client-core
  • client-core: 核心业务逻辑,独立可测试
  • cli-ui: Tauri GUI 应用,独立前端项目

所有依赖版本在根 Cargo.toml 中统一管理,确保版本一致性。

🔧 配置说明

配置文件结构

项目使用 config.toml 配置文件,支持智能配置查找:

[versions]
docker_service = "1.0.0"
patch_version = "1.0.1"
full_version_with_patches = "1.0.1+1"

[docker]
compose_file = "docker/docker-compose.yml"
env_file = "docker/.env"

[backup]
storage_dir = "./backups"
max_backups = 10

[cache]
download_dir = "./cache"
max_cache_size = "1GB"

[updates]
auto_check = true
auto_backup = true

智能配置查找

配置文件查找顺序:

  1. 命令行指定路径 (--config)
  2. 当前目录 ./config.toml
  3. 向上级目录递归查找
  4. 用户主目录 ~/.nuwax/config.toml

🏗️ 系统架构

核心组件

  • CLI 接口层: 命令解析、用户交互、进度显示
  • 业务逻辑层: 升级策略、备份管理、Docker 操作
  • 数据访问层: DuckDB 存储、配置管理、状态持久化
  • API 客户端: 版本检查、文件下载、服务通信

设计模式

  • 分层架构: 清晰的职责分离和依赖管理
  • 依赖注入: 通过 CliApp 统一管理组件生命周期
  • 策略模式: 支持多种升级策略的灵活切换
  • Actor 模式: 数据库操作的并发安全处理

🤝 贡献指南

我们欢迎社区贡献!请遵循以下步骤:

  1. Fork 项目到您的 GitHub 账户
  2. 创建 功能分支 (git checkout -b feature/amazing-feature)
  3. 提交 您的更改 (git commit -m 'Add some amazing feature')
  4. 推送 到分支 (git push origin feature/amazing-feature)
  5. 创建 Pull Request

代码规范

  • 使用 cargo fmt 格式化代码
  • 使用 cargo clippy 进行静态检查
  • 为新功能添加单元测试
  • 更新相关文档

📄 许可证

本项目采用双许可证:

您可以选择其中任一许可证使用本项目。

🔗 相关链接

💬 支持

如果您在使用过程中遇到问题或有改进建议:

  1. 查看 文档 获取详细信息
  2. 搜索 已知问题
  3. 创建新的 Issue
  4. 参与 讨论

⬆ 回到顶部

Made with ❤️ by the Nuwax Team