这是一个高度可定制的容器化应用快速部署框架,通过Docker容器化技术实现多服务的一键部署、启动、停止和重启管理。框架的核心特点是采用主目录名作为框架名和快捷命令名,实现真正的通用部署体验。
适用于需要在离线环境或标准化环境中快速部署多容器应用的场景,特别适合企业内部应用部署、开发测试环境。
声明:我不会写代码,这个项目完全是由AI编写的,主要是为了我的个人需求。
- 操作系统: Linux (推荐 Ubuntu 20.04+ / Rocky 9.6+ / CentOS 8+)
- Docker: 26.1.3
- Docker Compose: v2.27.0
- 内存: 根据部署服务规模调整,建议至少16GB+
- 存储: 根据部署服务规模调整,建议至少200GB可用空间
- 权限: 需要root或sudo权限进行安装
已验证: 本部署框架已在以下环境成功验证:
- 操作系统: Rocky Linux 9.6
- Docker: Docker version v26.1.3
- Docker Compose: Docker Compose version v2.27.0
关于Docker、Docker Compose的离线安装包以及各系统依赖包的下载方法和目录结构,请参阅DEPENDENCY_INSTALL.md文件。
将以下文件上传到Linux服务器的任意临时目录(例如 /tmp/deploy):
packages/目录(解压后的应用组件包)或packages.zip(应用组件包,二选一即可)system-deps/目录 (系统依赖包,按架构分类)install.sh(主安装脚本)uninstall.sh(卸载脚本)scripts/目录 (安装脚本,包含start-install.sh和menu.sh)
cd /tmp/deploy # 进入包含安装文件的临时目录
chmod +x install.sh
# 运行主安装脚本
./install.sh
运行安装脚本后,系统会弹出交互式菜单:
- 首先选择 "快速部署" 选项
- 然后输入您希望的安装目录路径(默认:
/opt/fast-deploy) - 框架会自动使用安装目录的最后一个目录名作为框架名称
安装脚本会自动执行以下步骤:
- 依赖检查: 检查并安装必要的系统依赖(支持离线安装)
- 解压组件: 解压应用组件包到指定目录
- 权限设置: 设置必要的文件执行权限
- 服务安装: 安装所有应用服务
- 命令配置: 配置框架命令(以目录名为命令名)
安装完成后,可直接使用框架名(即主目录名)作为命令来管理服务:
$FRAMEWORK_NAME start$FRAMEWORK_NAME stop$FRAMEWORK_NAME restart$FRAMEWORK_NAME status$FRAMEWORK_NAME start <应用名>本框架的核心设计理念是将主目录名作为框架的唯一标识和命令名。只需按照以下步骤操作,即可轻松自定义框架名称:
- 修改目标安装目录名称
- 保持内部文件结构不变
- 运行安装脚本
框架会自动检测并使用当前目录名作为框架名和命令名,无需修改任何脚本内容。
部署文件目录/
├── system-deps/ # 系统依赖包(按系统分类)
│ ├── Kylin/ # 麒麟操作系统依赖包
│ │ ├── amd64/ # amd64架构
│ │ └── arm64/ # arm64架构
│ ├── Rocky/ # Rocky Linux系统依赖包
│ │ ├── amd64/ # amd64架构
│ │ └── arm64/ # arm64架构
│ └── Ubuntu/ # Ubuntu系统依赖包
│ │ ├── amd64/ # amd64架构
│ │ └── arm64/ # arm64架构
├── packages.zip # 应用组件压缩包(或packages/目录,二选一即可)
├── install.sh # 主安装脚本
├── uninstall.sh # 卸载脚本
└── scripts/ # 安装脚本目录
├── start-install.sh # 一键部署脚本
├── menu.sh # 交互菜单脚本
└── utils/ # 工具脚本目录
/opt/<框架名>/
├── system-deps/ # 系统依赖包目录
│ ├── Kylin/ # 麒麟操作系统依赖包
│ │ ├── amd64/ # amd64架构
│ │ └── arm64/ # arm64架构
│ ├── Rocky/ # Rocky Linux系统依赖包
│ │ ├── amd64/ # amd64架构
│ │ └── arm64/ # arm64架构
│ └── Ubuntu/ # Ubuntu系统依赖包
│ ├── amd64/ # amd64架构
│ └── arm64/ # arm64架构
├── packages/ # 解压后的应用组件
│ ├── app/ # 应用服务目录
│ ├── docker-images/ # Docker镜像目录
│ ├── docker-install/ # Docker离线安装包
│ │ ├── amd64/ # amd64架构Docker安装包
│ │ └── arm64/ # arm64架构Docker安装包
│ ├── install.sh # 组件安装脚本
│ ├── start.sh # 服务启动脚本
│ ├── stop.sh # 服务停止脚本
│ └── restart.sh # 服务重启脚本
├── scripts/ # 安装脚本目录
│ ├── start-install.sh # 一键部署脚本
│ ├── menu.sh # 交互菜单脚本
│ └── utils/ # 工具脚本目录
└── uninstall.sh # 卸载脚本
- 通用性强:主目录名即框架名和命令名,无需修改代码即可适配不同项目
- 一键部署:全流程自动化,极大降低部署门槛
- 统一管理:统一的命令行接口,便于服务管理
- 扩展性好:模块化设计,易于添加新服务
- 兼容性高:支持多种Linux发行版和硬件架构
- 离线支持:包含所有必要依赖,可在无网络环境下部署
- 服务隔离:基于Docker容器技术,确保服务间相互隔离
- 资源优化:合理配置容器资源,优化系统资源使用
- 简化部署流程:将复杂的多服务部署简化为几个命令
- 提高部署一致性:确保每次部署的环境完全一致
- 降低运维成本:统一的管理接口降低了运维复杂度
- 增强系统稳定性:容器化部署减少了环境冲突问题
- 便于版本管理:支持不同版本的应用组件管理
- 灵活的扩展性:易于添加新的应用服务或功能模块
- 安装权限:安装过程中需要root权限,请确保有足够权限
- 交互式安装:安装过程中会弹出交互式菜单,用户可以自定义安装目录
- 目录命名规范:安装目录名称只允许使用字母、数字、下划线和连字符
- 目录冲突:如果安装目录已存在,系统会提示是否覆盖现有文件
- 安装时间:首次安装可能需要较长时间,请耐心等待
- 自定义服务:如需添加自定义服务,请按照现有应用结构放置在packages/app/目录下
- 框架命名:修改框架名称时,只需修改安装目录名称,无需修改内部文件
- 容器部署:服务默认使用Docker容器化部署,确保Docker环境正常运行
- 部署建议:对于大型部署,建议先进行测试环境验证,再进行生产环境部署
- 数据备份:定期备份重要数据和配置文件,以防意外情况发生
- 下载完成后,请将依赖包按照架构和功能分类存放在对应的目录中
- 离线环境部署时,请确保已准备好所有必要的系统依赖包
- 系统依赖安装支持离线环境,会自动根据系统类型、架构和缺失的依赖选择合适的安装包
- 按目录组织依赖包可以实现精确安装,避免不必要的包安装,节省时间和存储空间
本框架提供了完整的卸载脚本,用于彻底清理所有相关服务、数据和配置。卸载过程将执行以下操作:
- 停止所有运行中的容器服务
- 删除框架相关的Docker镜像
- 删除安装目录及所有数据
- 删除命令行快捷方式
重要:卸载脚本必须在框架的安装目录中执行!
cd /opt/fast-deploy # 进入框架安装目录(默认为/opt/fast-deploy,具体以实际安装路径为准)
chmod +x uninstall.sh # 添加执行权限
sudo ./uninstall.sh # 以root权限运行卸载脚本运行脚本后,会显示图形化菜单,您可以选择卸载所有服务和数据。脚本会显示详细的卸载确认信息,并在用户确认后执行卸载操作。
注意:卸载操作是不可逆的,将删除所有服务数据和配置。在执行卸载前,请确保已备份所有重要数据。
欢迎提交 Issue 和 Pull Request 来帮助改进项目。
BeginnerCong
本项目采用 MIT License 开源许可证。
本项目仅供学习和参考,在生产环境中使用前请进行充分测试。作者不对使用本项目可能导致的任何损失负责。