基于群辉 + Docker + Flask 搭建企业内部自动化服务平台

📅 2026/7/8 7:48:24 👁️ 阅读次数 📝 编程学习
基于群辉 + Docker + Flask 搭建企业内部自动化服务平台

记录一次使用群辉 NAS 搭建企业内部自动化服务平台的实践,包括 Docker 容器部署、自动更新、远程访问以及局域网设备调度。

前言

随着团队内部自动化需求越来越多,需要一个统一的平台来管理各种自动化流程。相比购买云服务器,群辉 NAS 具有成本低、易维护、存储能力强等优势,因此最终选择以群辉作为服务中心,结合 Docker 与 Flask 搭建整个自动化平台。


一、整体架构

整个系统主要分为四部分:

  • 主服务:负责业务接口、定时任务、自动化调度。
  • 群辉副服务:负责调用群辉系统能力。
  • 自动部署服务:监听代码更新并自动部署。
  • 局域网设备:运行自动化程序,由主服务统一调度。
开发机 │ Git Push │ 自动部署 │ Docker │ Flask 主服务 ├────────────┐ │ │ 副服务 局域网设备

二、主服务设计

主服务是整个系统的核心,基于 Flask 开发,对外统一提供 HTTP API。

除了业务接口之外,还承担了整个自动化平台的调度职责。

1、统一接口管理

所有业务能力均通过接口提供,例如:

  • 创建自动化任务
  • 查询任务执行状态
  • 获取设备列表
  • 调度局域网设备
  • 获取执行结果

统一接口能够降低模块之间的耦合,后续新增功能时也更加方便。

2、定时任务

除了响应外部请求之外,主服务还维护了一系列定时任务,例如:

  • 定时同步业务数据;
  • 定时扫描指定目录;
  • 定时检测局域网设备是否在线;
  • 定时触发自动化流程。

相比依赖操作系统计划任务,统一放在服务端管理更加直观,也方便维护。

3、自动化调度

当收到业务请求后,主服务会根据当前设备状态选择可用设备,并发送执行指令。

整个流程如下:

收到请求 │ 创建任务 │ 查找可用设备 │ 发送执行命令 │ 等待执行完成 │ 返回执行结果

这样后续新增自动化程序时,仅需增加新的接口即可,不需要修改整体架构。


三、副服务设计

由于部分群辉能力无法直接在 Docker 容器中调用,因此额外部署了一个副服务。

副服务主要负责:

  • 文件操作;
  • 共享目录管理;
  • 与群辉系统交互。

主服务只需要调用对应接口即可,无需关心底层实现,从而降低系统耦合。


四、自动部署

为了减少人工部署,采用 Git 推送触发自动部署。

部署脚本主要完成以下工作:

  • 防止重复部署;
  • 拉取最新代码;
  • 检查 requirements.txt 是否变化;
  • 必要时重新构建 Docker 镜像;
  • 停止旧容器并启动新容器;
  • 清理无用镜像。

通过比较 requirements 文件哈希值,仅在依赖发生变化时重新构建镜像,能够有效缩短部署时间。


五、内外网访问

内网访问

局域网内设备可直接访问部署在群辉上的 Flask 服务。

所有自动化设备均通过内网与主服务通信,速度快且稳定。

外网访问

由于服务部署在企业内网,外部网络默认无法直接访问,因此需要借助远程访问工具。

目前主要有两种方案:

方案一:DDNS

如果拥有公网 IP,可以通过 DDNS 配置远程访问。

这种方式访问速度快,但依赖公网环境,对网络要求较高。

方案二:向日葵 Docker 镜像

实际项目中采用的是向日葵官方 Docker 镜像。

部署流程如下:

拉取向日葵镜像 │ 启动 Docker 容器 │ 获取设备 SN 与验证码 │ 绑定向日葵账号 │ 远程访问群辉 │ 访问内部服务

相比安装群辉套件,Docker 部署更加灵活,也方便后续升级。

容器启动后,可以从日志中获取设备 SN 和验证码,登录向日葵后台完成绑定即可。

绑定成功后,无论身处公司还是外网,都可以直接远程连接群辉,进一步访问部署在群辉中的内部服务,无需额外配置复杂的网络环境。

对于没有公网 IP 的中小团队来说,这种方案部署简单、维护成本低,也是目前项目中长期采用的方式。


六、局域网设备通信

为了调度局域网中的自动化程序,采用 UDP + TCP 的组合方式。

首先通过 UDP 广播发现在线设备。

设备收到广播后返回自身信息,包括:

  • IP 地址;
  • 设备名称;
  • 当前状态。

随后建立 TCP 连接,同步设备支持执行的自动化程序。

当主服务收到执行请求后,只需要选择目标设备并发送命令即可。

客户端则通过本地文件触发器启动对应自动化流程,实现整个调度过程。


七、总结

目前整个平台已经能够稳定运行。

具备以下能力:

  • Flask 服务管理;
  • Docker 容器部署;
  • Git 自动部署;
  • 定时任务管理;
  • 局域网设备调度;
  • 向日葵远程访问;
  • 群辉文件管理。

整体部署成本较低,维护简单,比较适合中小团队搭建企业内部自动化平台。


附录 A:自动部署脚本

部署脚本主要流程如下:

获取部署锁 │ Git Pull │ 检查依赖 │ 按需构建镜像 │ 停止旧容器 │ 启动新容器 │ 清理镜像

通过 requirements.txt 哈希检测,实现镜像增量构建,提高部署效率。