首页
/ 基于puckel/docker-airflow的CeleryExecutor模式部署指南

基于puckel/docker-airflow的CeleryExecutor模式部署指南

2025-07-09 04:13:00作者:冯爽妲Honey

概述

本文将详细介绍如何使用puckel/docker-airflow项目中的docker-compose-CeleryExecutor.yml文件来部署Apache Airflow工作流管理系统。CeleryExecutor是Airflow的一种执行器模式,它利用Celery分布式任务队列来实现任务的分布式执行,适合生产环境使用。

核心组件解析

该docker-compose文件定义了多个服务,共同构成了一个完整的Airflow系统:

  1. Redis:作为Celery的消息代理(Broker),负责在调度器和执行器之间传递任务消息
  2. PostgreSQL:作为Airflow的元数据库,存储DAG定义、任务状态等元数据
  3. Webserver:提供Airflow的Web界面
  4. Scheduler:负责调度DAG任务
  5. Worker:实际执行任务的Celery工作节点
  6. Flower:Celery任务监控界面

详细配置说明

基础服务配置

redis:
  image: 'redis:5.0.5'
  
postgres:
  image: postgres:9.6
  environment:
    - POSTGRES_USER=airflow
    - POSTGRES_PASSWORD=airflow
    - POSTGRES_DB=airflow
  • Redis使用5.0.5版本,默认不需要密码(可取消注释配置密码)
  • PostgreSQL使用9.6版本,配置了airflow用户和同名数据库

Airflow核心服务

webserver:
  image: puckel/docker-airflow:1.10.9
  environment:
    - LOAD_EX=n
    - FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho=
    - EXECUTOR=Celery
  volumes:
    - ./dags:/usr/local/airflow/dags
  ports:
    - "8080:8080"
  • 使用1.10.9版本的puckel/docker-airflow镜像
  • LOAD_EX=n表示不加载示例DAG
  • FERNET_KEY用于加密敏感信息
  • 挂载本地dags目录到容器内
  • 暴露8080端口用于Web访问

调度与执行组件

scheduler:
  image: puckel/docker-airflow:1.10.9
  depends_on:
    - webserver
  command: scheduler

worker:
  image: puckel/docker-airflow:1.10.9
  depends_on:
    - scheduler
  command: worker
  • Scheduler负责解析DAG并调度任务
  • Worker是实际执行任务的节点,可以水平扩展
  • 两者都依赖相同的配置和环境变量

Flower监控

flower:
  image: puckel/docker-airflow:1.10.9
  ports:
    - "5555:5555"
  command: flower
  • Flower提供Celery任务的实时监控界面
  • 通过5555端口访问

关键配置项解析

  1. FERNET_KEY:用于加密数据库中的敏感信息,生产环境应替换为自己的密钥
  2. EXECUTOR=Celery:指定使用CeleryExecutor模式
  3. volumes:将本地dags目录挂载到容器内,方便开发调试
  4. depends_on:定义服务启动顺序依赖关系

部署建议

  1. 数据持久化:取消PostgreSQL的volumes注释以持久化数据库
  2. 安全性:建议启用Redis密码和PostgreSQL密码
  3. 扩展性:可以增加worker节点数量来提高并行处理能力
  4. 监控:通过Flower监控任务执行情况

使用流程

  1. 将docker-compose-CeleryExecutor.yml保存为docker-compose.yml
  2. 创建dags目录存放工作流定义文件
  3. 执行docker-compose up -d启动服务
  4. 访问8080端口使用Airflow Web界面
  5. 访问5555端口查看Celery任务监控

常见问题

  1. 连接问题:确保所有服务的环境变量配置一致
  2. 性能问题:根据任务量调整worker数量
  3. 时区问题:可在环境变量中配置时区

通过以上配置,您将获得一个功能完整的分布式Airflow环境,适合处理复杂的工作流任务。