首页
/ Windmill项目Kafka任务适配器部署指南

Windmill项目Kafka任务适配器部署指南

2025-07-06 02:32:09作者:鲍丁臣Ursa

概述

本文详细讲解如何使用Docker Compose部署Windmill项目的Kafka任务适配器环境。Windmill是一个开源的开发者工具平台,通过这个部署配置可以快速搭建包含Kafka消息队列的生产环境。

环境组件

该Docker Compose配置包含以下核心服务组件:

  1. Zookeeper:Kafka依赖的分布式协调服务
  2. Kafka:分布式消息队列系统
  3. PostgreSQL:Windmill的后端数据库
  4. Windmill Server:Windmill的核心服务
  5. 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
  • 同样依赖数据库健康状态

部署步骤

  1. 确保已安装Docker和Docker Compose
  2. 创建docker-compose.yml文件,复制上述配置
  3. 执行命令启动服务:docker-compose up -d
  4. 等待所有服务启动完成
  5. 访问Windmill服务:http://localhost:8000

生产环境建议

  1. 密码安全:务必修改默认的PostgreSQL密码
  2. 数据持久化:考虑使用外部存储卷而非匿名卷
  3. 资源限制:为各服务配置合理的资源限制
  4. 监控:添加Prometheus等监控组件
  5. 日志收集:配置ELK等日志收集系统

常见问题

Q: 如何扩展工作节点数量? A: 修改windmill_worker部分的replicas值后重新部署

Q: Kafka消息不消费怎么办? A: 检查Zookeeper和Kafka服务日志,确保连接正常

Q: 如何升级Windmill版本? A: 修改镜像标签后重新部署,注意数据库兼容性

通过本指南,您可以快速搭建一个完整的Windmill Kafka任务处理环境,为后续的业务开发提供基础支撑。