You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Airflow部署抉择:Docker还是virtual environment?入门避坑与学习咨询

Airflow 从零开始避坑指南及疑问解答

核心避坑原则

  • 绝对不要全局安装Airflow到系统Python环境,环境隔离是避免混乱的核心
  • 优先采用Docker Compose部署Airflow,这是官方推荐的标准方式,能彻底规避依赖冲突、端口占用等问题

1. Airflow 与 Docker的运行关系

正确逻辑是Airflow运行在Docker内部:Docker作为容器化引擎,负责封装Airflow的所有组件(Web服务、调度器、执行器、数据库等)及依赖环境,实现完全隔离。不存在“Docker运行在Airflow内部”的说法,Airflow是Python开发的工作流调度平台,Docker是宿主环境,二者是封装与被封装的关系。

2. Docker外运行Airflow的环境要求

如果必须在Docker外部署,必须将Airflow及所有依赖包安装在独立的Python虚拟环境中,这是避免污染系统环境、解决端口/版本冲突的唯一可行方案,步骤如下:

  • 创建并激活虚拟环境:python -m venv airflow-env && source airflow-env/bin/activate
  • 安装Airflow时必须使用官方提供的版本约束文件,指定具体版本以避免依赖冲突
  • 初始化数据库:airflow db init
  • 创建管理员用户:airflow users create --username admin --password admin --firstname Admin --lastname User --role Admin --email admin@example.com
  • 分终端启动Web服务和调度器:airflow webserver -p 8080、airflow scheduler

3. 学习Airflow前需掌握的知识

  • 基础Python语法(函数、模块、包管理):DAG以Python代码编写,需能理解和编写基础Python逻辑
  • Linux命令行操作:你已有10年经验,完全满足需求
  • 工作流调度核心概念:任务依赖、定时执行、重试机制
  • 可选补充:SQL基础(多数DAG会涉及数据库交互)、Docker基础(若采用容器部署)

4. 运行Bash Operator和Python Operator的步骤

步骤1:配置DAG目录

Airflow默认读取$AIRFLOW_HOME/dags下的DAG文件,先确认环境变量:echo $AIRFLOW_HOME(默认路径为~/airflow),若目录不存在则创建:mkdir -p ~/airflow/dags

步骤2:编写DAG文件(示例:~/airflow/dags/test_bash_python_dag.py)

from airflow import DAG
from airflow.operators.bash import BashOperator
from airflow.operators.python import PythonOperator
from datetime import datetime, timedelta

# 任务默认参数
default_args = {
    'owner': 'your_username',
    'retries': 1,
    'retry_delay': timedelta(minutes=5)
}

# 定义DAG
with DAG(
    dag_id='test_bash_python_dag',
    default_args=default_args,
    description='Simple DAG with Bash and Python Operators',
    start_date=datetime(2024, 1, 1),
    schedule_interval='@daily',
    catchup=False
) as dag:
    # Bash Operator:执行Shell命令
    bash_task = BashOperator(
        task_id='run_bash_cmd',
        bash_command='echo "Hello from Bash Operator!"'
    )

    # Python Operator:执行自定义函数
    def python_task_func():
        print("Hello from Python Operator!")
        return "Python Task Completed"

    python_task = PythonOperator(
        task_id='run_python_func',
        python_callable=python_task_func
    )

    # 设置任务执行顺序:bash_task完成后执行python_task
    bash_task >> python_task

步骤3:启动Airflow服务

  • 激活虚拟环境后,启动Web服务:airflow webserver -p 8080
  • 新开终端启动调度器:airflow scheduler

步骤4:触发并验证任务

  • 浏览器访问http://localhost:8080,登录后找到test_bash_python_dag
  • 点击触发按钮启动任务,通过Graph View查看执行状态,点击任务日志可查看输出内容

额外避坑要点

  • 安装Airflow必须指定版本和约束文件,杜绝依赖版本冲突
  • 避免设置Airflow为系统级开机自启:虚拟环境部署手动启动即可;Docker部署通过docker-compose up -d启动,docker-compose down停止,无系统残留
  • 端口冲突时,虚拟环境可指定其他端口启动Web服务:airflow webserver -p 8081;Docker部署修改docker-compose.yaml中的端口映射
  • 彻底清理Airflow:虚拟环境直接删除环境目录;Docker执行docker-compose down -v删除所有容器和数据卷

内容的提问来源于stack exchange,提问作者vinicius de novaes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:47:05