How-To Guides

استقرار آپاچی سوپرسِت با داکر کامپوز: راهنمای کامل

در منظره داده‌های مدرن، راه‌حل‌های هوش تجاری (BI) میزبانی‌شده توسط خود، کنترل بی‌نظیری بر امنیت، سفارشی‌سازی و هزینه ارائه می‌دهند. آپاچی سوپرسِت به عنوان یک ابزار متن‌باز پیشرو ظهور کرده است و پلتفرمی قدرتمند برای کاوش و تجسم داده‌ها فراهم می‌کند. اگرچه نسخه‌های مدیریت‌شده توسط ابر وجود دارند، اما استقرار سوپرسِت بر روی زیرساخت خودتان امکان یکپارچگی عمیق‌تر با انبارهای داده موجود و رعایت دقیق الزامات انطباقی را فراهم می‌کند.

این راهنما شما را در مسیر استقرار آپاچی سوپرسِت با استفاده از داکر کامپوز هدایت می‌کند. این روش برای توسعه‌دهندگان متوسطی که می‌خواهند محیطی تکرارپذیر، ایزوله و به راحتی قابل نگهداری بدون پیچیدگی‌های یک خوشه کامل کوبرنِتس (Kubernetes) داشته باشند، ایده‌آل است. ما پیکربندی‌های لازم، راه‌اندازی پایگاه داده و مراحل شروع به کار را پوشش خواهیم داد.

پیش‌نیازها و راه‌اندازی محیط

قبل از ورود به مرحله استقرار، مطمئن شوید که ماشین محلی یا سرور شما شرایط زیر را دارد:

  • داکر و داکر کامپوز: نصب و در حال اجرا باشند. می‌توانید این موضوع را با اجرای docker --version بررسی کنید.
  • دانش پایتون: آشنایی با محیط‌های پایتون مفید است، هرچند داکر بیشتر کارهای سنگین را برای شما انجام می‌دهد.
  • دسترسی به انبار داده: اعتبارنامه‌های لازم برای منبع داده هدف خود (مانند PostgreSQL، Redshift، BigQuery یا Snowflake) را آماده داشته باشید.

یک دایرکتوری جدید برای پروژه سوپرسِت خود ایجاد کنید و وارد آن شوید. این دایرکتوری شامل پیکربندی‌ها و فایل داکر کامپوز شما خواهد بود.

پیکربندی استک

کارآمدترین روش برای مدیریت وابستگی‌های سوپرسِت، استفاده از یک فایل docker-compose.yml است. این فایل سرویس‌ها (سوپرسِت، پایگاه داده، Redis) و اتصالات آن‌ها را تعریف می‌کند.

در زیر یک الگوی پیکربندی قوی آورده شده است. این پیکربندی شامل یک پایگاه داده PostgreSQL پایدار برای متادیتا و 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 Hijacking) حیاتی است.

راه‌اندازی اولیه و اولین اجرا

پس از ذخیره فایل docker-compose.yml، آماده راه‌اندازی طرح پایگاه داده و شروع سرویس‌ها هستید. تصویر داکر سوپرسِت شامل یک نقطه ورود (entrypoint) است که اگر دستور superset init ارسال شود، مهاجرت‌های پایگاه داده را به صورت خودکار انجام می‌دهد.

دستور زیر را در ترمینال خود از دایرکتوری حاوی فایل کامپوز اجرا کنید:

docker compose up -d

این دستور کانتینرها را در حالت جدا شده (detached mode) شروع می‌کند. در اولین باری که این دستور را اجرا می‌کنید، سوپرسِت مهاجرت‌های پایگاه داده را انجام خواهد داد که ممکن است یک یا دو دقیقه طول بکشد. می‌توانید برای اطمینان از تکمیل موفقیت‌آمیز فرآیند، لاگ‌ها را پایش کنید:

docker compose logs -f superset

هنگامی که پیام "Superset is running" را در لاگ‌ها مشاهده کردید، نمونه شما فعال است. در مرورگر خود به http://localhost:8088 مراجعه کنید. اعتبارنامه‌های پیش‌فرض admin / admin هستند. شما بلافاصله پس از اولین ورود، درخواست تغییر رمز عبور را خواهید دید.

ملاحظات مربوط به محیط تولید

در حالی که تنظیمات فوق برای توسعه و محیط آزمایشی (Staging) عالی است، استقرار در محیط تولید به سخت‌افزارسازی (Hardening) اضافی نیاز دارد:

  1. پروکسی معکوس: Nginx یا Apache را در جلوی سوپرسِت قرار دهید تا پایان‌دهی SSL/TLS را مدیریت کند.
  2. ذخیره‌سازی پایدار: اطمینان حاصل کنید که حجم‌های (Volumes) پایگاه داده به طور منظم پشتیبان‌گیری شوند.
  3. مدیریت اسرار: به جای متغیرهای محیطی، از Docker Secrets یا یک مدیر اسرار خارجی (مانند HashiCorp Vault) برای داده‌های حساس استفاده کنید.
  4. مقیاس‌بندی کارگران: برای داشبوردهای در مقیاس بزرگ، در نظر بگیرید که کارگران Celery را به استک داکر کامپوز اضافه کنید تا وظایف ناهمگام (Async) را مدیریت کنند.

نتیجه‌گیری

استقرار آپاچی سوپرسِت از طریق داکر کامپوز، مسیری هموار برای راه‌اندازی سریع یک ابزار هوش تجاری قدرتمند فراهم می‌کند. با ایزوله کردن لایه پایگاه داده، کش و برنامه، شما پایه‌ای قابل مدیریت و مقیاس‌پذیر برای تیم داده خود ایجاد می‌کنید.

از اینجا می‌توانید شروع به اتصال منابع داده خود، ساخت داشبوردها و اشتراک‌گذاری بینش‌ها در سراسر سازمان خود کنید. با رشد نیازهای شما، این پایه مبتنی بر داکر می‌تواند به عنوان نقشه‌ای برای ارکستراسیون پیچیده‌تر با کوبرنِتس یا ترافورم (Terraform) عمل کند. تحلیل‌های شادی داشته باشید!

Share: