收起左侧

自定义 Docker 应用桌面图标项目

2
回复
209
查看
[ 复制链接 ]

2

主题

2

回帖

0

牛值

江湖小虾

让自定义 Docker 容器自动变成飞牛桌面应用 —— WatchCow 分享

这是个什么东西?

为自部署的 Docker 应用添加桌面图标

B站视频:

背景

楼主之前用 Docker 跑了一些自己的服务, 但除了官方应用商店外的 Docker 应用, 没办法在桌面生成图标, 也没办法和 FN Connect 集成

所以一直使用 homepage + traefik 的方式构建自己的导航页

楼主选择这两个软件的原因也是因为, 我非常喜欢使用 Docker Label 的方式对容器做配置, 优点很明显, 就是管理集中, 我的任何修改都直接体现在 compose 文件中, 也容易在不同的 Docker 实例之间分享, 只需要复制 compose 文件, 启动后就可以完成转发之类的各种配置, 同时 Label 是 Docker 官方的功能, 兼容性也没问题

一个多月前, 楼主在论坛发帖, 希望能有一个官方支持的集成方案, 但没有得到确定要做的消息, 所以就干脆自己搓一个

工作流程

首先, 你需要安装 watchcow 的fpk包, 你可以从 https://github.com/tf4fun/watchcow/releases/tag/v0.2.0 中下载

之后你需要在你的 docker-compose 文件, 添加一些额外的 label

比如你跑了个 Nginx:

labels:
  # 启用 WatchCow 发现
  watchcow.enable: "true"

  # 应用标识 (对应 manifest.appname)
  watchcow.appname: "watchcow.nginx"

  # 显示信息 (对应 manifest 字段)
  watchcow.display_name: "Nginx"
  watchcow.desc: "高性能 Web 服务器"
  watchcow.version: "1.0.0"
  watchcow.maintainer: "WatchCow"

  # 网络配置
  watchcow.service_port: "8080"
  watchcow.protocol: "http"
  watchcow.path: "/"

  # UI 配置
  watchcow.ui_type: "url"  # url=新标签页, iframe=桌面窗口
  watchcow.icon: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/nginx.png"

容器一启动,你就能看到新的图标

实现细节

楼主之前看官方的开发者文档时, 看到官方提供的应用的模板

仔细研究之后发现并不复杂, 你完全可以将任意的应用打包为飞牛的官方应用包

所以 WatchCow 做的事情就是:

  1. 后台监听 Docker 的事件(哪个容器启动了、停止了、删除了)
  2. 发现有 watchcow.enable=true 标签的容器,就自动生成一个符合飞牛格式的应用包
  3. 调用 appcenter-cli install-local 把它装上

容器停了,应用也会跟着停;容器删了,应用也会自动卸载。完全不用手动操作

得到的好处是

  1. 简单, 将一个官方不支持的应用改为官方支持的应用, 只需要修改 compose 文件, 如果你不会修改, 直接扔给豆包或者DS也能有一个**不离十的结果, 分享应用也简单, 一个 compose 文件就可以
  2. 兼容, label 不会对 docker 应用产生任何的副作用, 也可以和其他的软件一起使用, 比如我前文提到的 Treafik 和 Homepage, 不管是否有这些软件, 额外的 label 也不会有任何问题, 同时使用的安装方式也是飞牛官方的模式, 只要安装包的结构不变就不会有兼容问题

其他

之前楼主其实搓了一个第一版, 当时由于不知道官方的扩展方式, 必须采用一些入侵式的手段, 常见的比如 hook 系统调用, 修改数据库, 修改前端文件之类的方案, 为了防止修改对飞牛系统本身产生影响, 楼主当时选择了一种纯内存修改的方案——ebpf, 也就是 watchcow 的 0.1 版本,通过Linux 内核提供的监听机制, 在进程之间交换数据时, 篡改请求数据, 由于是在内存中修改, 所以不会在系统中产生副作用, 但 0.1 版本有非常多的问题, 比如不支持手机端和FN Connect, 后面发现了官方的开发文档之后才有了 0.2 版本


项目地址:https://github.com/tf4fun/watchcow

有问题欢迎反馈!

收藏
送赞 5
分享

5

主题

4

回帖

0

牛值

江湖小虾

还是不错的

3

主题

27

回帖

0

牛值

江湖小虾

好用,手机app也显示图标了。

不知道是不是个例,主机默认192.168.1.2,watchcow.host参数设置为192.168.1.1,重启容器并没有生效,访问地址还是192.168.1.2。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则