Installer Apache Airflow avec Docker#
Docker est le meilleur moyen de déployer Apache Airflow. Dans ce tutoriel je vous montre comment procéder.
Télécharger le fichier docker-compose.yaml#
Veuillez créer un dossier dédié à Apache Airflow
Télechargez le fichier docker-compose.yaml
indiqué dans la documentation officielle.
docker-compose.yaml
est téléchargé sur votre machine dossier courant.
Créez les répertoires suivants
Définir AIRFLOW_HOME#
La variable AIRFLOW_HOME
indique le chemin vers le dossier d'Apache Airflow
Initialiser la base de données#
Dans un premier, il faut initialiser la base de données qui va stocker les données des utilisateurs et des flux qui seront créés.
Un utilisateurairflow
est également créé avec le mot de passe airflow
et le rôle Admin.
Démarrer les services de Airflow#
Maintenant, il faut lancer les différents services d'Apache Airflow à savoir airflow-scheduler
, airflow-webserver
, airflow-worker
et airflow-triggerer
.
Une fois la commande exécutée, vous pouvez vérifier l'état des conteneurs déployés avec la commande suivante
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
87cdbab20845 apache/airflow:2.6.1 "/usr/bin/dumb-init …" 3 hours ago Up 3 hours (healthy) 8080/tcp apache-airflow-airflow-triggerer-1
b9413c6fbeee apache/airflow:2.6.1 "/usr/bin/dumb-init …" 3 hours ago Up 3 hours (healthy) 8080/tcp apache-airflow-airflow-scheduler-1
61f7bd92877b apache/airflow:2.6.1 "/usr/bin/dumb-init …" 3 hours ago Up 3 hours (healthy) 0.0.0.0:8080->8080/tcp apache-airflow-airflow-webserver-1
aee2d3cea33b apache/airflow:2.6.1 "/usr/bin/dumb-init …" 3 hours ago Up 3 hours (healthy) 8080/tcp apache-airflow-airflow-worker-1
69979805360b redis:latest "docker-entrypoint.s…" 3 hours ago Up 3 hours (healthy) 6379/tcp apache-airflow-redis-1
dfb0b452a8f0 postgres:13 "docker-entrypoint.s…" 3 hours ago Up 3 hours (healthy) 5432/tcp apache-airflow-postgres-1
Docs Apache Airflow : Running Airflow in Docker
Connexion#
Rendez-vous à l'adresse http://localhost:8080/. Vous serez redirigé vers la page de connexion
Connectez-vous avec l'utilisateur airflow
avec le mot de passe airflow
Arrêter Apache Airflow#
Pour arrêter Apache Airflow, depuis le dossier d'Apache Airflow, lancez la commande suivante
PS C:\Users\Administrateur\Documents\dev\apache-airflow> docker compose down
time="2023-06-17T23:25:55Z" level=warning msg="The \"AIRFLOW_UID\" variable is not set. Defaulting to a blank string."
time="2023-06-17T23:25:55Z" level=warning msg="The \"AIRFLOW_UID\" variable is not set. Defaulting to a blank string."
[+] Running 8/8
- Container apache-airflow-airflow-worker-1 Removed 11.3s
- Container apache-airflow-airflow-webserver-1 Removed 12.0s
- Container apache-airflow-airflow-triggerer-1 Removed 5.5s
- Container apache-airflow-airflow-scheduler-1 Removed 9.1s
- Container apache-airflow-airflow-init-1 Removed 0.7s
- Container apache-airflow-postgres-1 Removed 0.8s
- Container apache-airflow-redis-1 Removed 0.6s
- Network apache-airflow_default Removed 0.7s
Il est souvent nécessaire d'installer des packages additionnels, on peut se connecter au conteneur et
Une fois à 'linstérieur du conteneur, vous pouvez installer les packages avec pip Cela marche bien mais ce n'est pas la bonne manière de faire. L'idéal c'est reconstruire l'image Airflow. Pour cela, créez un fichierDockerfile
dans le dossier que docker-compose.yml
avec le contenu suivant
FROM apache/airflow:2.6.1
USER airflow
COPY requirements.txt /requirements.txt
RUN pip install --no-cache-dir -r /requirements.txt
#!usr/bin/bash
docker compose down
docker compose build
docker compose up airflow-init -d
docker compose up -d
Airflow Component | Container |
---|---|
Web Server | apache-airflow-airflow-webserver |
Scheduler | apache-airflow-airflow-scheduler |
Executor | apache-airflow-airflow-worker , apache-airflow-airflow-triggerer |
Queue | apache-airflow-redis |
Workers | apache-airflow-airflow-worker |
Metadatabase | apache-airflow-postgres |
Configurer Airflow#
Airflow peut être personnalisé via des variables d’environnement. Voici les paramètres essentiels à configurer dans un contexte de production ou de développement contrôlé.
Déscativer les exemples Airflow#
Déscativer les exemples Airflow#
Par défaut Airflow charge des jobs d'exemple ainsi que des datasets, vous pouvez activer ou désactiver via le paramètre suivant :
Activer le test des connexions 🧪#
Permet de tester la validité des connexions dans l'interface utilisateur :
Configurer l’envoi d’emails (SMTP) ✉️#
Utilisé pour les notifications (échecs, alertes, etc.). Exemple avec un compte Gmail :
AIRFLOW__SMTP__SMTP_HOST=smtp.gmail.com
AIRFLOW__SMTP__SMTP_PORT=587
AIRFLOW__SMTP__SMTP_STARTTLS=True
AIRFLOW__SMTP__SMTP_SSL=False
AIRFLOW__SMTP__SMTP_USER=konka.dataanalytics@gmail.com
AIRFLOW__SMTP__SMTP_PASSWORD=xxx # Utiliser un mot de passe d'application
AIRFLOW__SMTP__SMTP_MAIL_FROM=Konka Analytics <konka.dataanalytics@gmail.com>
⚠️ Attention : Pour utiliser Gmail, il faut activer l’accès SMTP ou générer un mot de passe d’application si la double authentification est activée.
Bravo, tout est prêt maintenant. Dans la prochaine section, vous découvrirez les composants d'Apache Airflow.