App Keeper:一个 Docker 应用安装工具的设计思路
要解决的问题
内网服务器上安装、升级 Docker 应用,原来的做法是每台机器登上去手写 compose 再敲命令。步骤不复杂,但重复且容易出错,于是有了 App Keeper。
形态选择
纯 HTML/JS 的轻量页面,不引入构建工具,丢到任意静态服务器就能用。所有数据来自 AppHub 的开放 API,工具本身零配置——这是刻意为之的约束:工具越轻,部署和维护成本越低。
核心流程
- 输入应用的 appKey;
- 调用
GET /api/open/apps/{appKey},拿到应用信息与版本列表; - 选择目标版本;
- 本地生成 compose 配置并执行 Docker 命令。
安装和升级走同一条路径,区别只是版本号不同。appKey 作为唯一标识贯穿全流程,元数据集中维护在 AppHub,工具不保存任何应用状态。
升级策略
镜像保留最近 3 个版本。升级时先拉取新镜像,成功后再切换,失败可以回退到上一个版本。保留策略在界面上有明确提示,避免用户误以为任意历史版本都可回退。
接口设计上的两个决定
- 开放接口按菜单结构拆到独立控制器,不往现有控制器里堆,避免新旧功能互相影响。
- 错误信息区分「网络不通」和「应用不存在」,用户能自助排查,不用每次都来找我们。
工具类产品第一版一定要克制:把「能用」做稳,再谈扩展。App Keeper 到现在也没有计划加任何花哨功能。