Appetizer 基于 Docker 的工具 / 服务即插即用

AppetizerIO · 2018年09月06日 · 最后由 AppetizerIO 回复于 2018年09月07日 · 853 次阅读

废话不多说,先上动图,假设要在开发机上启动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:

  • 我听说一个新工具,想试用看看
    • 用 Appetizer 一键就好
  • 我要用XXX 抓包/存数据/可视化数据/xxx
    • 用 Appetizer 一键就好,用完关闭,不担心daemon常驻耗内存
  • 我要在服务器上装这些工具,全网用
    • 服务器上装好Docker 运行 Appetizer 一键即可,没差别
  • 我有个本地的工具想迁移到服务器上
    • Appetizer 创建工具的容器时,工具运行时产生的数据是mount到存储卷的(比如log, 数据等),具体用到哪些存储卷可以通过每个工具的详细信息了解。在服务器上用Appetizer同样安装这个工具,然后把存储卷数据从本地rsync到服务器对应的存储卷即可
  • 我是docker高级玩家
    • docker compose配置在,随便玩,透明的
  • 我是k8s高级玩家,我手下有xxx个容器,xxx个负载均衡实例,xxx个dashboard
    • 那你自己玩

原理

原理很简单,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) 例如:

  • Appetizer的每个工具的docker compose yml配置,可以单独拿出来,用官方的docker-compose来用

开放协作

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

  • 我想用一个新工具,有Docker安装方式,Appetizer没有收录
    • 点击 “贡献新的服务”,填写metadata (工具名称,logo,官网等等信息),重要的是写好它的compose文件(需要docker知识),提交后我们马上会处理、测试,最快下次发版
  • 我想用一个新工具,没有Docker安装方式
    • 可以先提交metadata,docker处留空,积极推进Docker化
  • 我做了一个新工具,希望Appetizer收录
    • 首先,学习docker并docker化你的工具,然后“贡献新的服务”
  • 为什么没有Appium?Appium不是也有Docker部署么?
    • Appium比较特别,需要访问USB设备,在linux下就是要访问 /dev/usb 是个特权操作,所以Appium在Linux上用Docker部署需要创建特权容器;Appium在非Linux上Docker安装,也是因为这个特权原因,需要搞一个docker machine,相当于一个虚拟机,暂时不在目前Appetizer支持的框架内
  • 为什么STF还不支持Docker部署?
    • STF的情况和Appium类似,而且STF的Docker部署非常混乱,努力中

AppetizerIO QQ群:467889502

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 4 条回复 时间 点赞

很赞的构思~

不过工具傻瓜一键安装,我只信bitnami

槽神 回复

VM早就过时,体积大,启动慢,内存耗费大,数据抠不出来

Rancher了解下

吴宝林 回复

能有专人管理的完整的rancher/k8s那当然好啦

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册