废话不多说,先上动图,假设要在开发机上启动 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 增加新工具/服务
/dev/usb
是个特权操作,所以 Appium 在 Linux 上用 Docker 部署需要创建特权容器;Appium 在非 Linux 上 Docker 安装,也是因为这个特权原因,需要搞一个docker machine
,相当于一个虚拟机,暂时不在目前 Appetizer 支持的框架内