一、环境准备

  • Linux
  • docker
  • docker-compose

二、部署

1.下载官方docker-compose文件,参考

mkdir -p /dockers/airflow
cd /dockers/airflow

curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.7.0/docker-compose.yaml'

2.初始化文件夹

  • 项目目录结构

    airflow:	
    	dags:	# DAG文件,映射到容器
    	logs:	# 日志文件
    	plugins:	# 拓展插件包
    	postgres-db:	# sql映射出db文件,也可以使用卷映射的方式
    	test:	# 测试文件夹
    	.env	# 环境变量
    	.gitignore	
    	airflow.cfg		# airflow配置文件
    	docker-compose.yaml
    	Dockerfile	# airflow容器构建
    	Makefile
    	README.md
    	requirements.txt	# python 安装环境
    
  • 创建文件夹 在Linux上,快速启动需要知道您的主机用户id,并且需要将组id设置为0。否则,在dags、日志和插件中创建的文件将由root用户拥有。您必须确保为docker compose配置它们

mkdir -p ./dags ./logs ./plugins ./config

echo -e "AIRFLOW_UID=$(id -u)" > .env

## 对于其他操作系统,您可能会收到未设置的 `AIRFLOW_UID` 警告,但您可以安全地忽略它。您还可以在与此内容相同的 `docker-compose.yaml` 文件夹中手动创建 `.env` 文件以消除警告
AIRFLOW_UID=50000

3.运行docker compose

# 初始化数据库
docker-compose up airflow-init

# 启动
docker-compose up

4.地址访问:http://localhost:8080 初始用户名密码:airflow/airflow

三、自定义

1.自定义pip环境(安装缺失的pip库) touch requirements.txt

pandas==1.3.5
requests==2.28.2
zeep==4.2.1
urllib3==1.26.6

2.构建自己的Dockerfile文件


FROM apache/airflow:2.7.0

USER root
RUN apt-get update \
  && apt-get install -y --no-install-recommends \
         vim \
  && apt-get autoremove -yqq --purge \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*

USER airflow
COPY requirements.txt .
RUN /usr/local/bin/python -m pip install --upgrade pip
RUN pip install -r requirements.txt
COPY ./dags dags
COPY ./plugins plugins
COPY ./airflow.cfg airflow.cfg

3.新增makefile指令文件touch Makefile

PACKAGES := "dags"

.PHONY: build
build:
	docker build . -f Dockerfile --tag airflow:jiasen

.PHONY: version
version:
	docker run --rm --name testairflow airflow:jiasen version

.PHONY: up
up:
	docker-compose up

.PHONY: down
down: 
	docker-compose down

.PHONY: dbt
dbt:
	python -m venv .dbt-venv
	.dbt-venv/bin/pip install -r requirements_dbt.txt -c constraints_dbt.txt

4.构建私有镜像

docker build  -t airflow:jiasen .

5.修改docker-compose 中的image

image: ${AIRFLOW_IMAGE_NAME:-airflow:jiasen}

7.映射配置文件

- ${AIRFLOW_PROJ_DIR:-.}/airflow.cfg:/opt/airflow/airflow.cfg

四、配置

如果您有 Linux 或 Mac OS,您可以简化工作并下载可选的包装器脚本,该脚本将允许您使用更简单的命令运行命令

curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.7.0/airflow.sh'
chmod +x airflow.sh

你也可以使用 as 参数在 bash 容器中输入交互式 bash shell,或者 python 输入 python 容器

./airflow.sh bash
./airflow.sh python

airflow.cfg

  • 配置取消示例Dags加载:
    • airflow.cfg:load_examples = False
    • docker-compose:AIRFLOW__CORE__LOAD_EXAMPLES: 'false'
  • 暴露配置在管理界面:expose_config = True

相关资料

  • 官方文档:https://airflow.apache.org/docs/apache-airflow/stable/index.html
  • Airflow中文文档:https://www.mianshigee.com/tutorial/AirflowZH/