How-To Guides

نشر Apache Superset باستخدام Docker Compose: دليل شامل

في المشهد الحديث للبيانات، توفر حلول ذكاء الأعمال (BI) المستضافة ذاتياً تحكماً لا مثيل له في الأمان، والتخصيص، والتكلفة. برز Apache Superset كأداة مفتوحة المصدر رائدة، حيث يوفر منصة قوية لاستكشاف البيانات وتصورها. بينما توجد نسخ مُدارة سحابياً، فإن نشر Superset على بنيتك التحتية الخاصة يتيح تكاملاً أعمق مع مستودعات البيانات الحالية وامتثالاً صارماً للمتطلبات.

يرشدك هذا الدليل خلال نشر Apache Superset باستخدام Docker Compose. هذه الطريقة مثالية للمطورين من المستوى المتوسط الذين يريدون بيئة قابلة للتكرار ومعزولة وسهلة الصيانة دون تعقيدات مجموعة عمل Kubernetes الكاملة. سنغطي التكوين اللازم، وتمهيد قاعدة البيانات، وإجراءات التشغيل.

المتطلبات المسبقة وإعداد البيئة

قبل الغوص في النشر، تأكد من أن جهازك المحلي أو الخادم يلبي المتطلبات التالية:

  • Docker و Docker Compose: مثبتان ويعملان. يمكنك التحقق من ذلك بتشغيل docker --version.
  • معرفة بلغة Python: من المفيد أن تكون على دراية ببيئات Python، على الرغم من أن Docker يتولى معظم الأعمال الشاقة.
  • الوصول إلى مستودع البيانات: جهز بيانات الاعتماد لمصدر البيانات المستهدف (مثل PostgreSQL، Redshift، BigQuery، أو Snowflake).

أنشئ مجلداً جديداً لمشروع Superset الخاص بك وانتقل إليه. سيحتوي هذا المجلد على التكوين وملف Docker Compose.

تكوين المجموعة

الطريقة الأكثر كفاءة لإدارة تبعيات Superset هي عبر ملف docker-compose.yml. يحدد هذا الملف الخدمات (Superset، قاعدة البيانات، Redis) والروابط بينها.

يُعد النموذج أدناه قالب تكوين قوياً. يتضمن قاعدة بيانات PostgreSQL دائمة للمعلومات الوصفية (metadata) وRedis للتخزين المؤقت وإدارة طابور المهام.

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:

ملاحظة أمان مهمة: في التكوين أعلاه، استبدل your-very-secure-secret-key-here بسلسلة قوية وعشوائية. تُستخدم هذه المفتاح لتوقيع ملفات تعريف الارتباط للجلسات (session cookies) وهو أمر حاسم لتأمين تطبيقك ضد اختطاف الجلسات.

التمهيد والإطلاق الأول

بمجرد حفظ ملف docker-compose.yml، أنت جاهز لتمهيد مخطط قاعدة البيانات وبدء الخدمات. يتضمن صورة Docker الخاصة بـ Superset نقطة دخول للأوامر تتعامل مع هجرات قاعدة البيانات تلقائياً إذا تم تمرير أمر superset init.

قم بتشغيل الأمر التالي في طرفية الأوامر (terminal) من المجلد الذي يحتوي على ملف compose الخاص بك:

docker compose up -d

يبدأ هذا الأمر الحاويات في الوضع المنفصل (detached mode). في المرة الأولى التي تشغل فيها هذا الأمر، سيقوم Superset بإجراء هجرات قاعدة البيانات، والتي قد تستغرق دقيقة أو دقيقتين. يمكنك مراقبة السجلات للتأكد من اكتمال العملية بنجاح:

docker compose logs -f superset

بمجرد أن ترى الرسالة "Superset is running" في السجلات، يكون مثيلك نشطاً. انتقل إلى http://localhost:8088 في متصفحك. بيانات الاعتماد الافتراضية هي admin / admin. سيُطلب منك تغيير كلمة المرور فوراً عند تسجيل الدخول لأول مرة.

اعتبارات الإنتاج

بينما يكون الإعداد أعلاه مثالياً للتطوير والمراحل التجريبية، تتطلب نشرات الإنتاج تعزيزات إضافية:

  1. الوكيل العكسي (Reverse Proxy): ضع Nginx أو Apache أمام Superset للتعامل مع إنهاء SSL/TLS.
  2. التخزين الدائم: تأكد من نسخ مجلدات قاعدة البيانات احتياطياً بانتظام.
  3. إدارة الأسرار: استخدم أسرار Docker أو مدير أسرار خارجي (مثل HashiCorp Vault) بدلاً من متغيرات البيئة للبيانات الحساسة.
  4. توسيع نطاق العمال: بالنسبة للوحات المعلومات واسعة النطاق، فكر في إضافة عملاء Celery إلى مجموعة Docker Compose للتعامل مع المهام غير المتزامنة.

الخاتمة

يوفر نشر Apache Superset عبر Docker Comspathاً مبسطاً لتشغيل أداة ذكاء أعمال قوية. من خلال عزل قاعدة البيانات، والتخزين المؤقت، وطبقة التطبيق، فإنك تخلق أساساً قابلاً للإدارة وقابلاً للتوسع لفريق البيانات الخاص بك.

من هنا، يمكنك البدء في ربط مصادر بياناتك، وبناء لوحات المعلومات، ومشاركة الرؤى عبر مؤسستك. مع نمو احتياجاتك، يمكن أن serves هذا الأساس القائم على Docker كقالب للتنسيق الأكثر تعقيداً مع Kubernetes أو Terraform. تحليل سعيد!

Share: