跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Airflow Docker Compose
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= Airflow Docker Compose = '''Airflow Docker Compose''' 是一种利用 [[Docker]] 和 [[Docker Compose]] 技术快速部署 [[Apache Airflow]] 的方法,适合开发、测试和生产环境。通过容器化技术,用户可以避免复杂的依赖配置,快速搭建可扩展的 Airflow 环境。本指南将详细介绍如何使用 Docker Compose 部署 Airflow,并涵盖常见配置和优化技巧。 == 介绍 == Apache Airflow 是一个开源的工作流编排工具,用于调度和监控数据处理流水线。传统的 Airflow 部署需要手动安装数据库(如 PostgreSQL 或 MySQL)、消息队列(如 Redis 或 RabbitMQ)以及 Airflow 本身的组件(如 Scheduler、Web Server 和 Worker)。而使用 Docker Compose,可以通过预定义的 YAML 文件一键启动所有服务,极大简化部署流程。 Docker Compose 允许用户定义多容器应用,并通过单个命令管理它们的生命周期。Airflow 官方提供了标准的 `docker-compose.yaml` 文件,用户可以直接使用或根据需求自定义。 == 准备工作 == 在开始之前,请确保已安装以下工具: * [[Docker]](版本 20.10+) * [[Docker Compose]](版本 1.29+) 验证安装: <syntaxhighlight lang="bash"> docker --version docker-compose --version </syntaxhighlight> == 快速启动 Airflow == Airflow 官方提供了默认的 `docker-compose.yaml` 文件,可通过以下步骤获取并运行: 1. 下载官方示例文件: <syntaxhighlight lang="bash"> curl -LfO 'https://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml' </syntaxhighlight> 2. 初始化数据库: <syntaxhighlight lang="bash"> docker-compose up airflow-init </syntaxhighlight> 3. 启动所有服务: <syntaxhighlight lang="bash"> docker-compose up -d </syntaxhighlight> 4. 访问 Web UI: 默认地址为 `http://localhost:8080`,用户名和密码均为 `airflow`。 == 配置文件解析 == 以下是 `docker-compose.yaml` 的核心部分解析: <syntaxhighlight lang="yaml"> version: '3.8' services: postgres: image: postgres:13 environment: POSTGRES_USER: airflow POSTGRES_PASSWORD: airflow POSTGRES_DB: airflow volumes: - postgres-db-volume:/var/lib/postgresql/data airflow-webserver: image: apache/airflow:2.5.0 depends_on: - postgres - airflow-scheduler environment: AIRFLOW__CORE__EXECUTOR: CeleryExecutor AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow ports: - "8080:8080" volumes: - ./dags:/opt/airflow/dags </syntaxhighlight> '''关键配置说明:''' * '''postgres''':Airflow 的元数据库,使用 PostgreSQL 13。 * '''airflow-webserver''':Airflow 的 Web 服务器,依赖 PostgreSQL 和 Scheduler。 * '''volumes''':将本地 `dags` 目录挂载到容器,便于开发调试。 == 自定义配置 == 用户可以通过修改 `docker-compose.yaml` 和 `.env` 文件调整 Airflow 行为。 === 修改 Executor === Airflow 支持多种执行器,如 `SequentialExecutor`、`LocalExecutor` 和 `CeleryExecutor`。以下示例展示如何切换至 `CeleryExecutor`: <syntaxhighlight lang="yaml"> environment: AIRFLOW__CORE__EXECUTOR: CeleryExecutor AIRFLOW__CELERY__BROKER_URL: redis://redis:6379/0 </syntaxhighlight> === 添加 Redis 服务 === 若使用 `CeleryExecutor`,需添加 Redis 作为消息队列: <syntaxhighlight lang="yaml"> services: redis: image: redis:latest ports: - "6379:6379" </syntaxhighlight> == 实际案例 == 以下是一个真实场景:使用 Docker Compose 部署 Airflow,并运行一个简单的 DAG。 1. 创建 `dags/example_dag.py`: <syntaxhighlight lang="python"> from datetime import datetime from airflow import DAG from airflow.operators.bash import BashOperator dag = DAG( 'example_dag', schedule_interval='@daily', start_date=datetime(2023, 1, 1) ) task = BashOperator( task_id='print_date', bash_command='date', dag=dag ) </syntaxhighlight> 2. 重启服务以加载新 DAG: <syntaxhighlight lang="bash"> docker-compose restart airflow-webserver airflow-scheduler </syntaxhighlight> 3. 在 Web UI 中激活并触发 DAG。 == 高级优化 == === 资源限制 === 可通过 `docker-compose.yaml` 限制容器资源: <syntaxhighlight lang="yaml"> airflow-worker: deploy: resources: limits: cpus: '2' memory: 4G </syntaxhighlight> === 使用自定义镜像 === 若需安装额外 Python 包,可基于官方镜像构建自定义镜像: <syntaxhighlight lang="dockerfile"> FROM apache/airflow:2.5.0 RUN pip install --user pandas numpy </syntaxhighlight> == 故障排查 == 常见问题及解决方案: * '''Web UI 无法访问''':检查端口冲突或服务日志(`docker-compose logs airflow-webserver`)。 * '''DAG 未加载''':确保 `dags` 目录正确挂载,并检查 Scheduler 日志。 == 总结 == 使用 Docker Compose 部署 Airflow 能显著降低运维复杂度,适合快速搭建开发和生产环境。通过灵活配置,用户可轻松扩展 Airflow 集群,并集成自定义依赖。建议结合 CI/CD 管道进一步自动化部署流程。 == 参见 == * [[Apache Airflow 官方文档]] * [[Docker Compose 文档]] [[Category:大数据框架]] [[Category:Airflow]] [[Category:Airflow部署与扩展]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)