Spaces:
Sleeping
Sleeping
File size: 2,657 Bytes
fbd6723 8813834 fbd6723 8813834 fbd6723 8813834 fbd6723 8813834 fbd6723 8813834 fbd6723 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | #!/bin/bash
set -e
echo "==================== Intel Image Classifier Startup ===================="
echo "Starting at $(date)"
# Navigate to backend directory
cd /app/backend/api
# Step 1: Run database migrations
echo "[1/5] Running database migrations..."
python manage.py migrate --noinput || {
echo "[WARNING] Migration failed (non-critical in development)"
}
# Step 2: Collect static files (skip if already done in build)
echo "[2/5] Collecting static files from Django apps..."
if [ ! -d "static" ] || [ -z "$(ls -A static 2>/dev/null)" ]; then
python manage.py collectstatic --noinput --clear 2>/dev/null || {
echo "[WARNING] Static files collection had issues (non-critical)"
}
else
echo "[OK] Static files already collected during build"
fi
# Step 3: Copy frontend build to Django static directory (skip if already done in build)
echo "[3/5] Copying React frontend build to Django static files..."
if [ ! -d "static/frontend" ] || [ -z "$(ls -A static/frontend 2>/dev/null)" ]; then
if [ -d "/app/frontend/build" ]; then
mkdir -p static/frontend
cp -r /app/frontend/build/* static/frontend/ 2>/dev/null || true
echo "[OK] Frontend assets copied"
else
echo "[WARNING] Frontend build directory not found"
fi
else
echo "[OK] Frontend assets already copied during build"
fi
# Step 4: Create superuser for admin panel (development only)
echo "[4/5] Setting up admin access..."
python -c "
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'api.settings')
django.setup()
from django.contrib.auth import get_user_model
User = get_user_model()
if not User.objects.filter(username='admin').exists():
User.objects.create_superuser('admin', 'admin@localhost', 'admin')
print('[OK] Admin user created - Username: admin, Password: admin')
else:
print('[OK] Admin user already exists')
" 2>/dev/null || echo "[INFO] Admin setup skipped"
# Step 5: Start the Django application
echo "[5/5] Starting Django application..."
echo "=================================================="
echo "URL: http://0.0.0.0:7860"
echo "API Docs: http://0.0.0.0:7860/swagger/"
echo "Admin: http://0.0.0.0:7860/admin/"
echo "=================================================="
# Use gunicorn in production, runserver in development
if [ "$DEBUG" = "False" ] || [ "$DEBUG" = "false" ]; then
echo "Running in PRODUCTION mode with Gunicorn"
gunicorn api.wsgi:application --bind 0.0.0.0:7860 --workers 3 --timeout 120 --access-logfile - --error-logfile -
else
echo "Running in DEVELOPMENT mode with Django runserver"
python manage.py runserver 0.0.0.0:7860
fi
|