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 mkdir apache-airflow cd apache-airflow Télechargez le fichier docker-compose.yaml indiqué dans la documentation officielle. wgets https://airflow.apache.org/docs/apache-airflow/2.6.1/docker-compose.yaml Le fichier docker-compose.yaml est téléchargé sur votre machine dossier courant. Créez les répertoires suivants mkdir -p ./dags ./logs ./plugins ./config echo -e "AIRFLOW_UID=$(id -u)" > .env Définir AIRFLOW_HOME# La variable AIRFLOW_HOME indique le chemin vers le dossier d'Apache Airflow export AIRFLOW_HOME=$(pwd) echo 'export AIRFLOW_HOME=$(pwd)' >> ~/.bashrc 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. docker compose up airflow-init -d Un utilisateur airflow 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-apiserver, airflow-worker, airflow-dag-processor et airflow-triggerer. docker compose up -d Une fois la commande exécutée, vous pouvez vérifier l'état des conteneurs déployés avec la commande suivante docker ps OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES dffe55153e76 apache-airflow-airflow-worker "/usr/bin/dumb-init …" 12 days ago Up 9 days (healthy) 8080/tcp apache-airflow-airflow-worker-1 c2f46e2e2f60 apache-airflow-airflow-apiserver "/usr/bin/dumb-init …" 12 days ago Up 9 days (healthy) 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp apache-airflow-airflow-apiserver-1 6212b8a06ed0 apache-airflow-airflow-triggerer "/usr/bin/dumb-init …" 12 days ago Up 9 days (healthy) 8080/tcp apache-airflow-airflow-triggerer-1 a2ea46509997 apache-airflow-airflow-dag-processor "/usr/bin/dumb-init …" 12 days ago Up 9 days (healthy) 8080/tcp apache-airflow-airflow-dag-processor-1 62c6c0029c6d apache-airflow-airflow-scheduler "/usr/bin/dumb-init …" 12 days ago Up 9 days (healthy) 8080/tcp apache-airflow-airflow-scheduler-1 c06f21ba45b7 postgres:13 "docker-entrypoint.s…" 12 days ago Up 9 days (healthy) 5432/tcp apache-airflow-postgres-1 3cccfbc13578 redis:7.2-bookworm "docker-entrypoint.s…" 12 days ago Up 9 days (healthy) 6379/tcp apache-airflow-redis-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 docker compose down OutputPS 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 NB : Docker arrête simplement les contenuers, vos données ne seront pas perdues. Vous pourrez redémarrer à tout moment. Il est souvent nécessaire d'installer des packages additionnels, on peut se connecter au conteneur et docker exec -it apache-airflow-airflow-scheduler-1 /bin/bash Une fois à 'linstérieur du conteneur, vous pouvez installer les packages avec pip pip install pandas db-analytics-tools 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 fichier Dockerfile dans le dossier que docker-compose.yml avec le contenu suivant DockerfileFROM apache/airflow:2.6.1 USER airflow COPY requirements.txt /requirements.txt RUN pip install --no-cache-dir -r /requirements.txt deploy.sh#!usr/bin/bash docker compose down docker compose build docker compose up airflow-init -d docker compose up -d bash deploy 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# AIRFLOW__CORE__LOAD_EXAMPLES = 'false' 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 : AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION = 'true' Activer le test des connexions 🧪# Permet de tester la validité des connexions dans l'interface utilisateur : AIRFLOW__CORE__TEST_CONNECTION = 'Enabled' 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.