首页
/ 使用puckel/docker-airflow构建本地Executor模式的Airflow环境教程

使用puckel/docker-airflow构建本地Executor模式的Airflow环境教程

2025-07-09 04:13:45作者:魏侃纯Zoe

概述

本文将详细介绍如何使用puckel/docker-airflow项目中的docker-compose-LocalExecutor.yml文件来搭建一个基于Local Executor的Apache Airflow环境。Local Executor模式适合中小规模的工作流管理,它使用本地进程池来执行任务,比Sequential Executor更高效,又比Celery Executor更简单。

环境架构解析

这个docker-compose配置定义了两个核心服务:

  1. PostgreSQL数据库服务:作为Airflow的后端数据库存储元数据
  2. Airflow Web服务器:提供Web界面和调度功能

详细配置说明

PostgreSQL服务配置

postgres:
    image: postgres:9.6
    environment:
        - POSTGRES_USER=airflow
        - POSTGRES_PASSWORD=airflow
        - POSTGRES_DB=airflow
    logging:
        options:
            max-size: 10m
            max-file: "3"
  • 使用PostgreSQL 9.6作为数据库
  • 预设了airflow用户和同名数据库
  • 日志配置限制单个日志文件最大10MB,保留3个文件

Airflow Web服务配置

webserver:
    image: puckel/docker-airflow:1.10.9
    restart: always
    depends_on:
        - postgres
    environment:
        - LOAD_EX=n
        - EXECUTOR=Local
    volumes:
        - ./dags:/usr/local/airflow/dags
    ports:
        - "8080:8080"
    command: webserver
    healthcheck:
        test: ["CMD-SHELL", "[ -f /usr/local/airflow/airflow-webserver.pid ]"]
  • 使用puckel/docker-airflow的1.10.9版本镜像
  • 配置为Local Executor模式(EXECUTOR=Local)
  • 挂载本地dags目录到容器内,方便开发调试
  • 映射8080端口供Web界面访问
  • 健康检查通过检测pid文件判断服务状态

部署步骤指南

  1. 准备环境

    • 确保已安装Docker和Docker Compose
    • 创建项目目录并进入
  2. 配置文件准备

    • 将docker-compose-LocalExecutor.yml保存为docker-compose.yml
    • 创建dags目录用于存放工作流定义文件
  3. 启动服务

    docker-compose up -d
    
  4. 访问Web界面

    • 浏览器访问http://localhost:8080
    • 默认用户名和密码为airflow/airflow
  5. 开发工作流

    • 在本地dags目录中添加.py文件定义DAG
    • 修改会自动同步到容器内

高级配置建议

  1. 插件支持:取消注释plugins卷挂载以支持自定义插件

    # - ./plugins:/usr/local/airflow/plugins
    
  2. 性能调优

    • 根据机器配置调整AIRFLOW__CORE__PARALLELISM参数
    • 设置合适的AIRFLOW__SCHEDULER__MIN_FILE_PROCESS_INTERVAL
  3. 安全加固

    • 修改默认的数据库密码
    • 配置Web认证方式

常见问题解决

  1. 初始化失败

    • 检查PostgreSQL服务是否正常启动
    • 查看容器日志:docker-compose logs
  2. DAG不显示

    • 确认dags目录挂载正确
    • 检查DAG文件语法是否正确
  3. 性能问题

    • 考虑升级到Celery Executor模式处理大规模任务
    • 增加数据库资源

最佳实践

  1. 使用版本控制管理dags目录
  2. 定期备份PostgreSQL数据
  3. 为生产环境配置适当的资源限制
  4. 监控服务健康状态

通过这个Local Executor配置,您可以快速搭建一个功能完整的Airflow开发环境,适合个人开发和小团队协作场景。当需要扩展到生产环境时,可以考虑迁移到Celery Executor模式以获得更好的扩展性。