让复杂的容器环境和数据任务,变得像打方向盘一样简单可控
01 痛点:当容器多了,问题就来了
Docker让应用的打包和分发变得无比简单,但当你的本地开发环境需要同时运行五六个微服务,再加上数据同步任务和定时脚本时,问题就来了:
docker-compose up拉起一堆容器,但依赖顺序怎么控制?- 有些任务是脚本,有些是容器,如何统一编排?
- 想要查看某个任务的执行状态和日志,得在多个窗口间切换
- 开发环境一多,端口冲突、资源占用让人头疼
SteerDock 正是为解决这些问题而生。
02 认识SteerDock
SteerDock 是一个轻量级的数据流与容器编排工具,旨在提供比 docker-compose 更直观、比 Airflow 更轻量的中间层解决方案。它特别适合本地开发环境管理和轻量级数据管道编排两大场景。
🔗 项目地址
- Gitee:steerdock
- GitHub:steerdock
- 官网:www.steerdock.com
名字的由来
SteerDock = Steer(驾驶/操控)+ Dock(码头/容器)。寓意是:像操控方向盘一样,灵活掌控你的容器和数据流。
03 核心特性
特性一:混合工作流编排
SteerDock 不仅支持 Docker 容器,还允许在同一个工作流定义中混入多种任务类型:
- 容器任务:拉起、停止、重启 Docker 容器
- 脚本任务:执行本地 Shell、Python、Node.js 脚本
- HTTP 任务:调用 API 接口
- 定时任务:按 Cron 表达式定时执行
这意味着你可以用一个配置文件,定义从“数据抓取 → 处理 → 存储”的完整链路。
特性二:可视化依赖管理
通过声明式配置(如 YAML),你可以清晰地定义任务之间的依赖关系。例如: `version: "1.0" tasks:
-
name: database type: container image: postgres:13 ports:
- "5432:5432"
-
name: init-db type: script command: ./scripts/init-database.sh depends_on:
- database # 等待数据库就绪后执行
-
name: backend type: container build: ./backend ports:
- "8080:8080" depends_on:
- init-db # 等待数据库初始化完成
-
name: frontend type: container build: ./frontend ports:
- "3000:3000" depends_on:
- backend`
这样一个配置,就能完整定义一套微服务开发环境。
特性三:状态追踪与调试
SteerDock 会对每个任务节点的执行状态、输入输出进行追踪,方便在开发测试中进行问题定位:
- ✅ 成功:绿色标识
- ⏳ 运行中:黄色闪烁
- ❌ 失败:红色标识,可查看错误日志
- ⏸️ 暂停:灰色标识
你可以随时查看某个任务的详细日志,而不必在多个终端窗口间切换。
特性四:一键拉起/销毁
针对复杂的微服务开发环境,SteerDock 可以让你通过一条命令,快速创建或清理一整套服务依赖: `# 拉起整个环境 steerdock up
查看状态
steerdock status
暂停某个服务
steerdock pause backend
销毁环境(不留痕迹)
steerdock down`
04 技术架构猜想(基于项目定位)
虽然 SteerDock 的具体技术实现还在演进中,但从其定位可以推测出可能的技术方向:
核心语言:Rust
选择 Rust 的原因:
- 高性能:无运行时开销,适合作为底层编排引擎
- 低资源占用:在本地开发环境中尤其重要
- 内存安全:避免因内存问题导致编排任务失败
与 Docker 的交互
通过 Docker SDK 或直接调用 Docker CLI,与本地 Docker 守护进程通信,实现对容器的生命周期管理。
状态存储
使用嵌入式数据库(如 SQLite)存储任务状态和执行历史,轻量且无需额外依赖。
任务调度引擎
借鉴 DAG(有向无环图)的思想,根据依赖关系调度任务执行,支持并行和串行执行。
05 快速体验(即将推出)
SteerDock 目前处于积极开发阶段,我们将很快提供预编译的二进制文件,支持:
- macOS(Intel & Apple Silicon)
- Linux(主流发行版)
- Windows(通过 WSL2)
尝鲜方式: `# 方式一:通过 Cargo 安装(需要 Rust 环境) cargo install steerdock
方式二:下载预编译二进制(即将开放)
访问官网下载对应平台的版本
方式三:从源码构建
git clone https://github.com/silvancoder/steerdock.git cd steerdock cargo build --release`
06 典型应用场景
场景一:微服务开发环境
一个典型的电商应用可能包含:用户服务、商品服务、订单服务、支付服务、消息队列、数据库、缓存...
用 SteerDock 一个配置文件搞定所有依赖,新成员加入团队时,一条命令就能拉起完整环境。
场景二:数据 ETL 管道
每天需要从多个数据源拉取数据,进行处理后存入数据库:
- 从 API 拉取数据(HTTP 任务)
- 数据清洗转换(Python 脚本)
- 存入数据库(容器任务)
- 生成报表(Node.js 脚本)
SteerDock 可以定义这些任务的依赖关系和执行顺序,并自动重试失败的任务。
场景三:CI/CD 本地测试
在提交代码前,想要完整模拟 CI 流程:lint → 单元测试 → 构建镜像 → 集成测试。用 SteerDock 在本地一键执行完整流程,发现问题及时修复,避免污染 CI 环境。
07 未来规划
短期目标(0.x版本)
- 基础的任务编排能力
- YAML 配置文件支持
- 任务状态追踪与日志查看
- 常用命令实现(up/down/status/logs)
中期目标(1.0版本)
- 可视化 Web UI
- 任务模板市场
- 与 OpenVizUI 深度集成
- 远程环境支持(SSH/Docker上下文)
长期愿景
- 分布式任务调度
- 云原生集成(Kubernetes)
- 插件化架构
08 开源与共建
SteerDock 同样遵循 Apache 2.0 许可,我们真诚邀请社区朋友一起参与建设。
我们需要你的帮助:
👨💻 Rust 开发者
- 参与核心引擎的开发
- 优化性能和资源占用
- 完善错误处理和日志
🎨 前端开发者
- 开发可视化 Web UI
- 设计直观的用户界面
- 实现实时状态更新
📝 文档贡献者
- 编写使用教程
- 整理常见问题
- 翻译英文文档
💡 产品建议者
- 提出真实的使用场景
- 反馈使用中的痛点
- 建议新功能方向
参与方式:
- 在 GitHub/Gitee 上点 ⭐ Star
- 提交 Issue 反馈问题或建议
- 发起 Pull Request 贡献代码
- 分享给更多需要的朋友
写在最后:双剑合璧
如果说 OpenVizUI 解决的是“如何看”的问题,那么 SteerDock 解决的则是“如何管”的难题。当两者结合:
- SteerDock 定义和执行复杂的任务流
- OpenVizUI 将执行过程渲染成可视化的拓扑图和看板
- 你在图形界面上发现问题,点击按钮调整参数
- SteerDock 接收指令,动态调整任务执行
这是一个完整的闭环:定义 → 执行 → 可视化 → 交互 → 调整。
我们相信,开发工具应该更智能、更亲切。无论是 OpenVizUI 还是 SteerDock,都是这一理念的实践。
🔗 项目链接
- Gitee:steerdock
- GitHub:steerdock
- 官网:www.steerdock.com
欢迎关注,期待与你在开源世界相遇