How-To Guides

Déployer Apache Superset avec Docker Compose : Un guide complet

Dans le paysage moderne des données, les solutions de Business Intelligence (BI) auto-hébergées offrent un contrôle inégalé sur la sécurité, la personnalisation et les coûts. Apache Superset s'est imposé comme un outil open-source de premier plan, offrant une plateforme puissante pour l'exploration et la visualisation des données. Bien que des versions gérées par le cloud existent, déployer Superset sur votre propre infrastructure permet une intégration plus profonde avec les entrepôts de données existants et le respect strict des exigences de conformité.

Ce guide vous accompagne dans le déploiement d'Apache Superset à l'aide de Docker Compose. Cette méthode est idéale pour les développeurs intermédiaires qui souhaitent un environnement reproductible, isolé et facile à maintenir, sans la complexité d'un cluster Kubernetes complet. Nous couvrirons la configuration nécessaire, l'initialisation de la base de données et les procédures de démarrage.

Prérequis et configuration de l'environnement

Avant de vous lancer dans le déploiement, assurez-vous que votre machine locale ou votre serveur répond aux exigences suivantes :

  • Docker et Docker Compose : Installés et en cours d'exécution. Vous pouvez le vérifier en exécutant docker --version.
  • Connaissances en Python : Une familiarité avec les environnements Python est utile, bien que Docker abstraise la majeure partie du travail complexe.
  • Accès à l'entrepôt de données : Ayez les identifiants prêts pour votre source de données cible (par exemple, PostgreSQL, Redshift, BigQuery ou Snowflake).

Créez un nouveau répertoire pour votre projet Superset et accédez-y. Ce répertoire contiendra votre configuration et le fichier Docker Compose.

Configuration de la pile

La manière la plus efficace de gérer les dépendances de Superset est via un fichier docker-compose.yml. Ce fichier définit les services (Superset, Base de données, Redis) et leurs interconnexions.

Voici un modèle de configuration robuste. Il inclut une base de données PostgreSQL persistante pour les métadonnées et Redis pour la mise en cache et la gestion des files d'attente de tâches.

version: '3.9'
services:
  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 5s
      timeout: 3s
      retries: 50

  postgres:
    image: postgres:15-alpine
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: superset
      POSTGRES_PASSWORD: superset
      POSTGRES_DB: superset
    volumes:
      - superset-db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "superset"]
      interval: 10s
      timeout: 5s
      retries: 5

  superset:
    image: apache/superset:latest
    restart: unless-stopped
    ports:
      - "8088:8088"
    command: superset init
    environment:
      SUPERSET_SECRET_KEY: 'your-very-secure-secret-key-here'
      DATABASE_HOST: postgres
      DATABASE_PORT: 5432
      DATABASE_USER: superset
      DATABASE_PASSWORD: superset
      DATABASE_DB: superset
    volumes:
      - superset-home:/app/superset_home
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy

volumes:
  superset-home:
  superset-db:

Note de sécurité importante : Dans la configuration ci-dessus, remplacez your-very-secure-secret-key-here par une chaîne forte et aléatoire. Cette clé est utilisée pour signer les cookies de session et est cruciale pour sécuriser votre application contre le piratage de session.

Initialisation et premier lancement

Une fois le fichier docker-compose.yml enregistré, vous êtes prêt à initialiser le schéma de la base de données et à démarrer les services. L'image Docker de Superset comprend une entrée de commande qui gère automatiquement les migrations de base de données si la commande superset init est passée.

Exécutez la commande suivante dans votre terminal depuis le répertoire contenant votre fichier compose :

docker compose up -d

Cette commande démarre les conteneurs en mode détaché. La première fois que vous l'exécutez, Superset effectuera des migrations de base de données, ce qui peut prendre une ou deux minutes. Vous pouvez surveiller les journaux pour vous assurer que le processus s'est terminé avec succès :

docker compose logs -f superset

Une fois que vous voyez le message "Superset is running" dans les journaux, votre instance est en ligne. Accédez à http://localhost:8088 dans votre navigateur. Les identifiants par défaut sont admin / admin. On vous demandera de changer le mot de passe immédiatement lors de la première connexion.

Considérations pour la production

Bien que la configuration ci-dessus soit parfaite pour le développement et les environnements de test, les déploiements en production nécessitent un durcissement supplémentaire :

  1. Proxy inverse : Placez Nginx ou Apache devant Superset pour gérer la terminaison SSL/TLS.
  2. Stockage persistant : Assurez-vous que les volumes de la base de données sont régulièrement sauvegardés.
  3. Gestion des secrets : Utilisez Docker Secrets ou un gestionnaire de secrets externe (comme HashiCorp Vault) au lieu des variables d'environnement pour les données sensibles.
  4. Mise à l'échelle des travailleurs : Pour les tableaux de bord à grande échelle, envisagez d'ajouter des travailleurs Celery à la pile Docker Compose pour gérer les tâches asynchrones.

Conclusion

Le déploiement d'Apache Superset via Docker Compose offre un chemin simplifié pour mettre en place un outil de BI puissant. En isolant la base de données, le cache et la couche application, vous créez une base gérable et évolutive pour votre équipe de données.

À partir de là, vous pouvez commencer à connecter vos sources de données, à construire des tableaux de bord et à partager des analyses au sein de votre organisation. À mesure que vos besoins évoluent, cette base Docker peut servir de modèle pour une orchestration plus complexe avec Kubernetes ou Terraform. Bonne analyse !

Share: