使用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配置定义了两个核心服务:
- PostgreSQL数据库服务:作为Airflow的后端数据库存储元数据
- 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文件判断服务状态
部署步骤指南
-
准备环境:
- 确保已安装Docker和Docker Compose
- 创建项目目录并进入
-
配置文件准备:
- 将docker-compose-LocalExecutor.yml保存为docker-compose.yml
- 创建dags目录用于存放工作流定义文件
-
启动服务:
docker-compose up -d
-
访问Web界面:
- 浏览器访问http://localhost:8080
- 默认用户名和密码为airflow/airflow
-
开发工作流:
- 在本地dags目录中添加.py文件定义DAG
- 修改会自动同步到容器内
高级配置建议
-
插件支持:取消注释plugins卷挂载以支持自定义插件
# - ./plugins:/usr/local/airflow/plugins
-
性能调优:
- 根据机器配置调整AIRFLOW__CORE__PARALLELISM参数
- 设置合适的AIRFLOW__SCHEDULER__MIN_FILE_PROCESS_INTERVAL
-
安全加固:
- 修改默认的数据库密码
- 配置Web认证方式
常见问题解决
-
初始化失败:
- 检查PostgreSQL服务是否正常启动
- 查看容器日志:
docker-compose logs
-
DAG不显示:
- 确认dags目录挂载正确
- 检查DAG文件语法是否正确
-
性能问题:
- 考虑升级到Celery Executor模式处理大规模任务
- 增加数据库资源
最佳实践
- 使用版本控制管理dags目录
- 定期备份PostgreSQL数据
- 为生产环境配置适当的资源限制
- 监控服务健康状态
通过这个Local Executor配置,您可以快速搭建一个功能完整的Airflow开发环境,适合个人开发和小团队协作场景。当需要扩展到生产环境时,可以考虑迁移到Celery Executor模式以获得更好的扩展性。