122 lines
3.7 KiB
Bash
122 lines
3.7 KiB
Bash
#!/bin/bash
|
|
# MetaSet BI - Initialization Script
|
|
# Arcádia Suite
|
|
|
|
set -e
|
|
|
|
echo "========================================="
|
|
echo "MetaSet BI - Starting up..."
|
|
echo "========================================="
|
|
|
|
# Environment variables with defaults
|
|
METASET_PORT="${METASET_PORT:-8100}"
|
|
DATABASE_URL="${DATABASE_URL:-postgresql://arcadia:arcadia123@db:5432/metaset_db}"
|
|
ARCADIA_DATABASE_URL="${ARCADIA_DATABASE_URL:-postgresql://arcadia:arcadia123@db:5432/arcadia}"
|
|
METASET_ADMIN_USER="${METASET_ADMIN_USER:-admin}"
|
|
METASET_ADMIN_EMAIL="${METASET_ADMIN_EMAIL:-admin@arcadia.app}"
|
|
METASET_ADMIN_PASSWORD="${METASET_ADMIN_PASSWORD:-metaset2026}"
|
|
REDIS_URL="${REDIS_URL:-redis://redis:6379/1}"
|
|
|
|
echo "[MetaSet] Configuration:"
|
|
echo " Port: $METASET_PORT"
|
|
echo " Database: ${DATABASE_URL//@*/@*****/}"
|
|
echo " Redis: ${REDIS_URL//@*/@*****/}"
|
|
|
|
# =============================================================================
|
|
# WAIT FOR DEPENDENCIES
|
|
# =============================================================================
|
|
|
|
echo "[MetaSet] Waiting for PostgreSQL..."
|
|
until python3 -c "
|
|
import psycopg2
|
|
import sys
|
|
try:
|
|
conn = psycopg2.connect('$DATABASE_URL')
|
|
conn.close()
|
|
except Exception as e:
|
|
print(f'Error: {e}')
|
|
sys.exit(1)
|
|
" 2>/dev/null; do
|
|
echo "[MetaSet] PostgreSQL not ready, retrying in 2s..."
|
|
sleep 2
|
|
done
|
|
echo "[MetaSet] PostgreSQL is ready!"
|
|
|
|
echo "[MetaSet] Waiting for Redis..."
|
|
until python3 -c "
|
|
import redis
|
|
import sys
|
|
try:
|
|
r = redis.from_url('$REDIS_URL')
|
|
r.ping()
|
|
except Exception as e:
|
|
print(f'Error: {e}')
|
|
sys.exit(1)
|
|
" 2>/dev/null; do
|
|
echo "[MetaSet] Redis not ready, retrying in 2s..."
|
|
sleep 2
|
|
done
|
|
echo "[MetaSet] Redis is ready!"
|
|
|
|
# =============================================================================
|
|
# DATABASE MIGRATIONS
|
|
# =============================================================================
|
|
|
|
echo "[MetaSet] Running database migrations..."
|
|
# TODO: Run Superset migrations
|
|
# superset db upgrade
|
|
|
|
echo "[MetaSet] Initializing roles and permissions..."
|
|
# TODO: Run Superset init
|
|
# superset init
|
|
|
|
# =============================================================================
|
|
# CREATE ADMIN USER
|
|
# =============================================================================
|
|
|
|
echo "[MetaSet] Creating admin user..."
|
|
python3 << PYEOF
|
|
import sys
|
|
sys.path.insert(0, '/app')
|
|
|
|
try:
|
|
# TODO: Create admin user in Superset
|
|
print(f"[MetaSet] Admin user: $METASET_ADMIN_USER")
|
|
print(f"[MetaSet] Admin email: $METASET_ADMIN_EMAIL")
|
|
print("[MetaSet] Admin creation skipped (Superset integration pending)")
|
|
except Exception as e:
|
|
print(f"[MetaSet] Warning creating admin: {e}")
|
|
|
|
sys.exit(0)
|
|
PYEOF
|
|
|
|
# =============================================================================
|
|
# REGISTER ARCÁDIA DATABASE
|
|
# =============================================================================
|
|
|
|
echo "[MetaSet] Registering Arcádia database connection..."
|
|
python3 << PYEOF
|
|
import sys
|
|
sys.path.insert(0, '/app')
|
|
|
|
try:
|
|
# TODO: Register Arcádia database in Superset
|
|
print(f"[MetaSet] Arcádia DB: ${ARCADIA_DATABASE_URL//@*/@*****/}")
|
|
print("[MetaSet] Database registration skipped (Superset integration pending)")
|
|
except Exception as e:
|
|
print(f"[MetaSet] Warning registering database: {e}")
|
|
|
|
sys.exit(0)
|
|
PYEOF
|
|
|
|
# =============================================================================
|
|
# START SERVER
|
|
# =============================================================================
|
|
|
|
echo "========================================="
|
|
echo "MetaSet BI - Starting server on port $METASET_PORT"
|
|
echo "========================================="
|
|
|
|
# Start MetaSet server (Apache Superset via Gunicorn)
|
|
exec python run.py --host 0.0.0.0 --port "$METASET_PORT" --workers 2
|