废话不多说,先上动图,假设要在开发机上启动 mitmproxy 这个代理工具

Appetizer 1.3.14 新功能,工具即插即用,一键起停,首发支持 Jenkins, Influxdb, Gitlab, Grafana, ATXServer, mitmproxy, Hitchhiker, STF,持续开放增加中。。。

解决了什么问题

每当要用个新工具,前几个小时花在

python 2.7不行,要3.6
jdk 6不行要8
sudo pip install 等啊等,SSL一会又出错了
go build 等
npm install 还是cnpm install
...

这些从源代码开搞的安装成年旧事早就应该淘汰了,处处用 sudo,处处全局安装,离系统重装不远。Docker 早就来解决这些问题了,工具自己需要 Python/JDK/Node/Go 的版本自己声明,build 过程写入 Dockerfile,build 成镜像,安装工具是直接抓取镜像直接跑就好。是时候想到装工具首选用 Docker,于是我们 Appetizer 就把这一溜常用的工具的 docker 安装全都撸了一遍,写成了统一的部署脚本,然后就,一键安装起停咯。当然是支持三平台的,只要装好 Docker,其他事情交给我们(Windows, mac 有 Docker Desktop 全家福, linux 直接包管理装)。Use case:

原理

原理很简单,Docker 装好之后,有非常完整的 API:https://docs.docker.com/engine/api/v1.37/#operation/ImageList
docker 命令行工具其实是 API 的封装,而 Appetizer 是直接调用 API 管理 Docker 的。

在管理每个具体工具的时候,我们撸了一遍每个工具的 docker 安装文档,绝大多数都是建议用 docker run xxx 命令行工具来部署的。我们统一采用的 docker compose 配置文件格式。科普一下 docker compose 是一个(官方)工具,读取 yml 格式的配置文件,可以自动管理一个工具需要的多个 docker 容器(比如工具依赖 mysql 容器等等)。用 compose 格式的另一个好处是可以全面地管理工具运行中产生的数据(存储卷)。Appetizer 可以读取标准的 docker compose yml 配置文件并执行它,兼容官方的 docker-compose 工具。每个 Appetizer 支持的工具的详细信息里都有会抓取的镜像,容器名字,端口映射以及存储卷(volume) 例如:

开放协作

所有的目前的(以及未来的)工具的 metadata 和 compose 配置都在这里:https://github.com/appetizerio/OpenServices 欢迎 PR 增加新工具/服务

AppetizerIO QQ 群:467889502


↙↙↙阅读原文可查看相关链接,并与作者交流