Airflow:如何通过 docker-compose.yml 安装 pip
简介
Apache Airflow 是一个用 Python 编写的可编程调度和监控系统。它可用于创建、调度和监视工作流,以及在工作流中处理任务。而在 Airflow 中,使用 Python 编写脚本时,常常需要使用 pip 来安装所需的库。在本文中,我们将介绍如何通过 docker-compose.yml 文件来安装 pip,并通过 Docker 容器运行 Airflow。
安装 Docker 和 Docker Compose
首先,您需要确保已在您的系统中安装了 Docker 和 Docker Compose。若尚未安装,请按照以下步骤进行安装。
安装 Docker
您可以按照以下链接的步骤来安装 Docker:
Get Docker Engine – Community for Ubuntu
安装 Docker Compose
安装 Docker Compose:
sudo apt install docker-compose
编写 docker-compose.yml 文件
现在,让我们创建一个名为 docker-compose.yml
的文件来配置我们的 Airflow 环境。
version: '3'
services:
postgres:
image: postgres:latest
environment:
POSTGRES_USER: airflow
POSTGRES_PASSWORD: airflow
POSTGRES_DB: airflow
webserver:
image: puckel/docker-airflow:1.10.9
restart: always
depends_on:
- postgres
environment:
- LOAD_EX=n
- EXECUTOR=Celery
- POSTGRES_USER=airflow
- POSTGRES_PASSWORD=airflow
- POSTGRES_DB=airflow
volumes:
- ./dags:/usr/local/airflow/dags
- ./scripts:/usr/local/airflow/scripts
ports:
- "8080:8080"
scheduler:
image: puckel/docker-airflow:1.10.9
restart: always
depends_on:
- webserver
- postgres
command: scheduler
environment:
- LOAD_EX=n
- EXECUTOR=Celery
- POSTGRES_USER=airflow
- POSTGRES_PASSWORD=airflow
- POSTGRES_DB=airflow
volumes:
- ./dags:/usr/local/airflow/dags
- ./scripts:/usr/local/airflow/scripts
worker:
image: puckel/docker-airflow:1.10.9
restart: always
depends_on:
- webserver
- postgres
command: worker
environment:
- LOAD_EX=n
- EXECUTOR=Celery
- POSTGRES_USER=airflow
- POSTGRES_PASSWORD=airflow
- POSTGRES_DB=airflow
volumes:
- ./dags:/usr/local/airflow/dags
- ./scripts:/usr/local/airflow/scripts
在上面的 docker-compose.yml
文件中,我们定义了四个服务:postgres
、webserver
、scheduler
和 worker
。
postgres
服务将作为 Airflow 的数据存储数据库。webserver
服务是 Airflow 的 Web 服务器,用于管理和监控工作流。scheduler
服务用于调度任务。worker
服务用于执行任务。
构建和启动 Airflow
接下来,我们使用以下命令构建和启动 Airflow 服务。
docker-compose up -d
这将构建并启动我们在 docker-compose.yml
文件中定义的所有服务。一旦服务都启动完成,您可以通过在浏览器中访问 http://localhost:8080
来访问 Airflow 的 Web 界面。
安装 pip
现在我们要在 Docker 容器中安装 pip。为此,我们需要进入 webserver
容器。
docker-compose exec webserver bash
接着,在容器中运行以下命令来安装 pip。
apt update
apt install -y python-pip
安装完成后,您可以验证 pip 是否正确安装。
pip --version
运行 Airflow 任务
现在您已经在 Docker 容器中安装了 pip,您可以在 Airflow 中编写并运行任务。以下是一个简单的示例任务,将打印 “Hello, Airflow!” 信息。
在 dags
目录中创建一个 Python 脚本,如 hello_airflow.py
。
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from datetime import datetime
def print_hello():
return 'Hello, Airflow!'
dag = DAG('hello_airflow', description='Simple DAG for printing Hello, Airflow!',
schedule_interval='0 12 * * *',
start_date=datetime(2022, 1, 1), catchup=False)
hello_operator = PythonOperator(
task_id='print_hello',
python_callable=print_hello,
dag=dag,
)
hello_operator
保存脚本后,您可以上传到 dags
目录中并在 Airflow Web 界面中观察任务的运行。
结论
通过本文的步骤,您已经学会了如何通过 Docker Compose 安装 pip,并在 Airflow 中编写和运行任务。