一、环境准备
- 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'
- airflow.cfg:
- 暴露配置在管理界面:
expose_config = True
相关资料
- 官方文档:https://airflow.apache.org/docs/apache-airflow/stable/index.html
- Airflow中文文档:https://www.mianshigee.com/tutorial/AirflowZH/
...