AirFlow安装和使用

一 从Docker Hub 拉取 Apache Airflow 镜像并上传至本地 Harbor

bash 复制代码
#从 Docker Hub 拉取官方 Apache Airflow 镜像
docker pull apache/airflow:3.1.8-python3.12
#为镜像打标签以匹配 Harbor 仓库格式(假设本地 Harbor 地址为 `harbor.example.com`)
docker tag apache/airflow:3.1.8-python3.12 harbor.example.com/airflow/airflow:3.1.8-python3.12
#登录本地 Harbor 仓库
docker login harbor.example.com
#将打好标签的镜像推送到 Harbor (运行前需要现在本地Harbor仓库新建项目airflow)
docker push harbor.example.com/airflow/airflow:3.1.8-python3.12

二 下载和编辑docker-compose.yaml

bash 复制代码
#从官网下载docker-compose.yaml
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/3.1.8/docker-compose.yaml'

#创建所需目录
mkdir -p ./dags ./logs ./plugins ./config

#改为使用本地docker harbor镜像
image: harbor_ip:harbor_port/airflow/airflow:3.1.8-python3.12

#获取当前的用户 ID,并输出到环境变量
echo -e "AIRFLOW_UID=$(id -u)" > .env

#将 AIRFLOW__CORE__LOAD_EXAMPLES 的值从 'true' 改为 'false'。
#防止 Web UI 中出现大量的示例 DAG,让你专注于自己的业务逻辑。
AIRFLOW__CORE__LOAD_EXAMPLES: 'false'  

#运行命令openssl rand -base64 42 生成一个强随机密钥,配置在.evn文件中
AIRFLOW__API_AUTH__JWT_SECRET=生成的长随机字符串密钥

#生成一个随机的 Fernet Key 并填入
#AIRFLOW__CORE__FERNET_KEY 配置为空字符串,后果非常严重,Airflow 将无法启动,或者启动后无法保存任何敏感信息
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
AIRFLOW__CORE__FERNET_KEY: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

#修改对外暴漏的端口为8086
  airflow-apiserver:
    <<: *airflow-common
    command: api-server
    ports:
      - "8086:8080"


#修改config/airflow.cfg中的配置,开启 Airflow 界面"测试连接"按钮
test_connection = Enabled

三 运行 AirFlow 容器

bash 复制代码
#运行命令进行初始化,最终会返回"airflow-init-1 exited with code 0" 说明初始化成功
docker compose up airflow-init
docker-compose down

#重新启动,这次启动后airflow就能正式工作了
docker compose up -d
#

四 访问 AirFlow Web UI

在浏览器中打开 http://localhost:8086,使用之前创建的管理员用户名和密码登录。

参考资料:

【1】https://airflow.apache.org/docs/apache-airflow/stable/howto/docker-compose/index.html

相关推荐
爱喝水的鱼丶11 分钟前
SAP-ABAP:ABAP 用户出口开发规范与避坑指南:10 类典型错误与运维方案
运维·性能优化·sap·abap·增强·经验交流·出口
博、、29 分钟前
从零构建智慧场馆解决方案:架构设计与开发实践
大数据·运维
敢敢是只喵i39 分钟前
给现有业务系统接 AI 助手,入口怎么选?网页聊天、自动化任务与本地 Agent 对比
运维·人工智能·ai·开源·自动化·安全架构
章老师说2 小时前
BFE v1.8.6 正式发布:AI 网关计费精细化、Claude 协议与会话亲和性升级
运维·人工智能·ai·负载均衡·ai-native
Brilliantwxx2 小时前
【Linux】 进程(10) 进程控制深度解析:创建、终止与等待
linux·运维·服务器·c语言·开发语言·网络
欧米欧3 小时前
Linux基础指令上
linux·运维·服务器
爱喝水的鱼丶3 小时前
SAP-ABAP:BAdI 上下文数据获取与交互:标准数据读取与修改逻辑实现
运维·性能优化·sap·abap·增强·经验交流·badi
ARM|X86+FPGA工业主板厂家4 小时前
基于嵌入式 GPU 的智能服务机器人
linux·运维·arm开发·fpga开发·机器人
pt10434 小时前
网络自动化Python课程:Python与Linux密钥和敏感信息管理介绍
运维·自动化
严谨的麻辣烫4 小时前
2026 年静态 IP 为什么重新受到关注?从住宅代理安全问题看固定网络出口
运维·服务器·tcp/ip·网络安全