Windmill 项目 Docker Compose 部署指南
2025-07-06 02:30:33作者:冯爽妲Honey
概述
Windmill 是一个开源的自动化工作流平台,本文将从技术角度详细解析其 Docker Compose 部署方案。通过这份部署文件,我们可以了解 Windmill 的系统架构和各个组件的功能定位。
核心组件解析
1. 数据库服务
数据库采用 PostgreSQL 16 版本,配置了以下关键参数:
- 共享内存设置为 1GB (shm_size)
- 数据持久化到 db_data 卷
- 健康检查机制确保服务可用性
- 日志配置采用 JSON 格式,支持日志轮转和压缩
2. Windmill 主服务
Windmill 服务分为三种角色:
-
Server 服务:
- 处理 API 请求和系统管理功能
- 监听 8000 和 2525 端口
- 依赖数据库服务健康状态
-
Worker 服务:
- 默认启动 3 个实例
- 每个实例限制 1 CPU 和 2GB 内存
- 挂载 Docker 套接字以支持容器化任务
- 使用专门的卷存储依赖缓存和日志
-
Native Worker 服务:
- 专为轻量级任务优化的特殊 Worker
- 配置了 8 个工作线程
- 使用更短的队列检查间隔(200ms)
3. 辅助服务
-
索引服务:
- 提供全文搜索功能(企业版特性)
- 默认禁用(replicas: 0)
- 使用专用卷存储索引数据
-
语言服务器(LSP):
- 提供代码补全和语法检查
- 缓存存储在 lsp_cache 卷
-
多人协作服务:
- 企业版专属功能
- 默认禁用
-
Caddy 反向代理:
- 提供 HTTP/25 端口转发
- 支持自定义证书配置
- 数据存储在 caddy_data 卷
部署配置要点
-
环境变量配置:
- DATABASE_URL 可指向外部数据库
- WM_IMAGE 指定 Windmill 镜像版本
- 日志大小和数量可通过环境变量调整
-
资源限制:
- Worker 实例有明确的 CPU/内存限制
- 内存可使用 GiB 单位(如 2Gi)
-
持久化存储:
- 数据库、缓存、日志、索引等数据都配置了专用卷
- 确保服务重启后数据不丢失
-
健康检查:
- 数据库服务配置了 pg_isready 检查
- 确保依赖服务就绪后再启动应用
高级配置建议
-
生产环境调整:
- 考虑增加 Worker 实例数量
- 根据负载调整资源限制
- 启用索引服务以支持全文搜索
-
安全建议:
- 修改默认的 PostgreSQL 密码
- 配置 HTTPS 访问
- 限制 Docker 套接字访问权限
-
监控方案:
- 利用 JSON 格式日志便于采集分析
- 监控各服务健康状态
- 关注卷存储使用情况
总结
这份 Docker Compose 文件展示了 Windmill 的微服务架构设计,通过合理的服务拆分和资源配置,实现了功能模块化和弹性扩展能力。部署时可根据实际需求调整副本数量、资源配额和功能开关,平衡系统性能和资源消耗。