Installer Apache Airflow directement sur votre système d'exploitation avec pip peut rapidement devenir fastidieux en raison des conflits de bibliothèques C (PostgreSQL, cryptographie) et de la multiplicité des services à démarrer simultanément (Scheduler, Webserver, Triggerer, Redis, PostgreSQL).
La méthode officielle recommandée par l'équipe d'Apache Airflow pour le développement et la production est le déploiement conteneurisé via Docker Compose.
flowchart TD
subgraph Hote["Machine Hôte (Votre Poste / Serveur)"]
DIR["Dossier Projet : apache-airflow/<br>├── dags/ (Vos scripts Python)<br>├── logs/ (Journaux d'exécution)<br>├── plugins/ (Opérateurs custom)<br>└── .env (AIRFLOW_UID=50000)"]
end
subgraph Compose["Conteneurs Docker Compose"]
WEB["airflow-webserver (Port 8080)"]
SCHED["airflow-scheduler"]
WORKER["airflow-worker"]
TRIG["airflow-triggerer"]
PG["postgres:13 (Port 5432)"]
REDIS["redis:7.2 (Port 6379)"]
end
DIR -->|Montage de volumes partagés| Compose
style Hote fill:#f1f5f9,stroke:#475569
style Compose fill:#e0f2fe,stroke:#0284c7,stroke-width:2px,color:#0f172a
1. Prérequis techniques#
Avant de commencer, vérifiez que votre machine dispose des éléments suivants :
- Docker Engine (version 20.10.0 ou supérieure) et Docker Compose v2 (docker compose version).
- Ressources mémoire allouées à Docker : Apache Airflow fait tourner plusieurs conteneurs en parallèle. Allouez au minimum 4 Go de RAM (8 Go fortement recommandés) dans les paramètres de Docker Desktop (onglet Resources > Advanced), sous peine de voir le conteneur du Scheduler planter silencieusement par manque de mémoire (OOM Kill).
2. Préparer l'environnement de travail#
Créez un répertoire dédié à votre projet Airflow et positionnez-vous dedans :
Créez l'arborescence des sous-dossiers locaux qui seront montés comme volumes dans les conteneurs :
./dags: Contiendra l'ensemble de vos fichiers de pipelines Python../logs: Réceptionnera les fichiers journaux d'exécution de toutes les tâches../plugins: Contiendra vos composants personnalisés (Hooks ou Operators custom)../config: Contiendra vos configurations spécifiques et templates d'alerte.
Configurer l'UID utilisateur (.env)#
Pour éviter les problèmes de permissions de fichiers entre l'hôte et les conteneurs Linux sous Linux et macOS :
[!NOTE] Si vous êtes sous Windows natif, vous pouvez simplement renseigner
AIRFLOW_UID=50000dans votre fichier.env.
3. Télécharger le fichier docker-compose.yaml officiel#
Téléchargez le manifeste officiel d'Apache Airflow à l'aide de curl :
Ce fichier configure l'ensemble des services nécessaires :
1. airflow-webserver : Interface utilisateur accessible sur le port 8080.
2. airflow-scheduler : Analyseur de DAGs et ordonnanceur.
3. airflow-worker : Exécuteur Celery des tâches de calcul.
4. airflow-triggerer : Gestionnaire d'événements asynchrones.
5. airflow-init : Conteneur éphémère d'initialisation de la base de données.
6. postgres : Base de données de métadonnées.
7. redis : Broker de messages pour Celery.
4. Personnaliser la configuration (.env)#
Avant de lancer les conteneurs, désactivons le chargement des centaines de DAGs d'exemples fournis par défaut, afin d'avoir une interface épurée :
Ajoutez ces lignes à votre fichier .env :
# Désactiver les exemples par défaut
AIRFLOW__CORE__LOAD_EXAMPLES=false
# Mettre en pause les nouveaux DAGs lors de leur première détection
AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION=true
# Activer le bouton de test des connexions dans l'interface
AIRFLOW__CORE__TEST_CONNECTION=Enabled
5. Initialiser la base de métadonnées#
Exécutez la commande d'initialisation. Elle applique les migrations SQL sur PostgreSQL et crée automatiquement le compte administrateur par défaut :
Lorsque l'initialisation se termine avec succès, vous devez voir s'afficher la ligne :
airflow-init_1 | User "airflow" created with role "Admin"
apache-airflow-airflow-init-1 exited with code 0
6. Démarrer les services Airflow#
Lancez l'ensemble des conteneurs en arrière-plan (mode détaché -d) :
Vérifiez que tous les services sont démarrés et en bonne santé (healthy) :
CONTAINER ID IMAGE STATUS PORTS NAMES
dffe55153e76 apache/airflow:2.8.2 Up 2 minutes (healthy) 8080/tcp apache-airflow-airflow-worker-1
c2f46e2e2f60 apache/airflow:2.8.2 Up 2 minutes (healthy) 0.0.0.0:8080->8080/tcp apache-airflow-airflow-webserver-1
6212b8a06ed0 apache/airflow:2.8.2 Up 2 minutes (healthy) 8080/tcp apache-airflow-airflow-triggerer-1
62c6c0029c6d apache/airflow:2.8.2 Up 2 minutes (healthy) 8080/tcp apache-airflow-airflow-scheduler-1
c06f21ba45b7 postgres:13 Up 2 minutes (healthy) 5432/tcp apache-airflow-postgres-1
3cccfbc13578 redis:7.2-bookworm Up 2 minutes (healthy) 6379/tcp apache-airflow-redis-1
7. Connexion à l'interface Web#
- Ouvrez votre navigateur et naviguez sur http://localhost:8080/.
- Vous accédez à la page d'authentification :

- Saisissez les identifiants d'administration par défaut :
- Nom d'utilisateur :
airflow - Mot de passe :
airflow - Vous accédez au tableau de bord central d'Airflow :

8. Arrêter ou redémarrer l'environnement#
Pour arrêter temporairement vos conteneurs sans perdre vos données ni vos historiques :
[!NOTE] L'instruction
docker compose downarrête et supprime les conteneurs, mais préserve intégralement les volumes Docker contenant vos métadonnées. Lorsque vous relancerezdocker compose up -d, vous retrouverez tous vos DAGs, historiques et connexions exactement là où vous les aviez laissés.
9. Installer des dépendances Python supplémentaires#
Dans vos pipelines de données, vous aurez inévitablement besoin de bibliothèques tierces comme pandas, requests, scikit-learn ou des connecteurs cloud spécialisés.
[!WARNING] N'installez jamais de packages en direct dans les conteneurs avec
docker exec pip install! Dès que le conteneur sera recréé, vos modifications seront irrémédiablement perdues.
La bonne pratique consiste à construire une image personnalisée :
-
Créez un fichier
requirements.txtà la racine de votre dossier projet : -
Créez un fichier
Dockerfile: -
Modifiez la section
builddans votredocker-compose.yaml(ou décommentez la lignebuild: .) puis recompilez votre image :
Désormais, tous vos workers et votre scheduler partageront la même image enrichie et reproductible !
Votre environnement de développement Apache Airflow est opérationnel et sécurisé. Dans la leçon suivante, nous allons explorer en détail chaque recoin de l'interface graphique d'Airflow pour en maîtriser la navigation !
Commentaires