应用结构
每个 IronFlock 应用都是一个 Git 版本控制的文件夹,包含您的应用代码和一个可选的 .ironflock 配置目录。
目录结构
my-app/
├── Dockerfile # 必需:定义容器镜像
├── docker-compose.yml # 可选:多容器配置
├── main.py # 您的应用代码(任意语言)
├── requirements.txt # 依赖项
└── .ironflock/
├── board-template.yml # 仪表板布局
├── data-template.yml # 遥测数据的数据库模式
├── env-template.yml # 用户可配置的参数
├── port-template.yml # 远程访问端口定义
└── ai-template.yml # AI 智能体定义应用的六个组成部分
1. 边缘代码
核心应用逻辑。此代码在设备上的 Docker 容器内运行,负责与传感器、PLC、摄像头或任何连接的硬件进行通信。
边缘代码可以使用任何编程语言编写——Python、JavaScript、Go、Rust、C++ 或任何可以在 Docker 容器中运行的语言。
2. 仪表板(用户界面)
使用无代码仪表板编辑器构建的实时数据面板。仪表板显示项目中运行该应用的所有设备的数据,并通过消息系统自动更新。
仪表板配置存储在 board-template.yml 中,由编辑器自动生成。
3. 数据存储
每个项目都有自己的物理数据库(由 TimescaleDB 驱动)。当应用在 data-template.yml 中定义了表时,这些表会在用户安装应用时自动创建。数据按项目隔离——开发者无法访问用户数据。
4. 消息域
安装后,应用会获得一个私有消息域,连接以下各方:
- 边缘设备上的所有应用实例
- 项目数据库
- 仪表板 UI
通信使用 WAMP(Web 应用消息协议),通过 IronFlock SDK 实现(Python 使用 ironflock-py,JavaScript 使用 ironflock-js)。
5. 远程访问
在 port-template.yml 中定义端口和协议,以启用到设备服务的安全隧道。用户可以按设备启用或禁用这些隧道。参见远程访问。
6. AI 智能体
通过 ai-template.yml 公开特定领域的 AI 智能体,扩展 IronFlock AI 助手。参见 AI 功能。
设备上的持久存储
默认情况下,容器内的数据在重启后会丢失。以下两个目录在重启后持久保留:
| 路径 | 范围 |
|---|---|
/data | 此应用私有——其他应用无法访问 |
/shared | 设备上所有应用共享 |
如果您使用 Docker Compose,请改为在 docker-compose.yml 中配置持久卷。
硬件访问
如果您的应用需要与本地硬件(传感器、摄像头、串口设备)交互,这些设备会挂载在容器内的 /dev 路径下。