Windmill项目Kafka任务适配器部署指南
2025-07-06 02:32:09作者:鲍丁臣Ursa
概述
本文详细讲解如何使用Docker Compose部署Windmill项目的Kafka任务适配器环境。Windmill是一个开源的开发者工具平台,通过这个部署配置可以快速搭建包含Kafka消息队列的生产环境。
环境组件
该Docker Compose配置包含以下核心服务组件:
- Zookeeper:Kafka依赖的分布式协调服务
- Kafka:分布式消息队列系统
- PostgreSQL:Windmill的后端数据库
- Windmill Server:Windmill的核心服务
- Windmill Worker:任务执行工作节点
详细配置解析
Zookeeper服务
zookeeper:
image: zookeeper
使用官方Zookeeper镜像,作为Kafka的依赖服务。Zookeeper负责管理Kafka的集群元数据、控制器选举等核心功能。
Kafka服务
kafka:
image: ubuntu/kafka
environment:
- TZ=UTC
- ZOOKEEPER_HOST=zookeeper
- ZOOKEEPER_PORT=2181
depends_on:
zookeeper:
condition: service_started
关键配置说明:
- 使用ubuntu/kafka镜像
- 设置时区为UTC
- 指定Zookeeper连接地址和端口
- 依赖关系确保Zookeeper先启动
PostgreSQL数据库
db:
image: postgres:14
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: changeme
POSTGRES_DB: windmill
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
数据库配置要点:
- 使用PostgreSQL 14版本
- 挂载数据卷确保数据持久化
- 设置默认密码和数据库名
- 健康检查确保服务可用性
Windmill核心服务
windmill_server:
image: ghcr.io/windmill-labs/windmill:main
deploy:
replicas: 1
ports:
- 8000:8000
environment:
- DATABASE_URL=postgres://postgres:changeme@db/windmill?sslmode=disable
- MODE=server
depends_on:
db:
condition: service_healthy
服务端配置说明:
- 暴露8000端口
- 连接PostgreSQL数据库
- 运行模式设置为server
- 依赖数据库健康状态
Windmill工作节点
windmill_worker:
image: ghcr.io/windmill-labs/windmill:main
pull_policy: always
deploy:
replicas: 3
restart: unless-stopped
environment:
- DATABASE_URL=postgres://postgres:changeme@db/windmill?sslmode=disable
- MODE=worker
- WORKER_GROUP=default
depends_on:
db:
condition: service_healthy
工作节点特点:
- 默认启动3个副本
- 设置为自动重启策略
- 运行模式为worker
- 指定工作节点组为default
- 同样依赖数据库健康状态
部署步骤
- 确保已安装Docker和Docker Compose
- 创建docker-compose.yml文件,复制上述配置
- 执行命令启动服务:
docker-compose up -d
- 等待所有服务启动完成
- 访问Windmill服务:
http://localhost:8000
生产环境建议
- 密码安全:务必修改默认的PostgreSQL密码
- 数据持久化:考虑使用外部存储卷而非匿名卷
- 资源限制:为各服务配置合理的资源限制
- 监控:添加Prometheus等监控组件
- 日志收集:配置ELK等日志收集系统
常见问题
Q: 如何扩展工作节点数量?
A: 修改windmill_worker
部分的replicas
值后重新部署
Q: Kafka消息不消费怎么办? A: 检查Zookeeper和Kafka服务日志,确保连接正常
Q: 如何升级Windmill版本? A: 修改镜像标签后重新部署,注意数据库兼容性
通过本指南,您可以快速搭建一个完整的Windmill Kafka任务处理环境,为后续的业务开发提供基础支撑。