#!/bin/bash set -euo pipefail log() { echo "[ENTRYPOINT] $1" } log "Boot sequence started at $(date -u +"%Y-%m-%d %H:%M:%S UTC")" # Debug installed transformers version to ensure modeling_layers exists python - <<'PY' import importlib.util, transformers print(f"[ENTRYPOINT] transformers version: {transformers.__version__}") spec = importlib.util.find_spec("transformers.modeling_layers") print(f"[ENTRYPOINT] transformers.modeling_layers available: {bool(spec)}") PY if [[ -z "${DATABASE_URL:-}" ]]; then log "DATABASE_URL is empty -> Django will fallback to POSTGRES_* or SQLite" else log "DATABASE_URL detected (length: ${#DATABASE_URL})" fi cd /app log "Running migrations..." python hue_portal/manage.py migrate --noinput log "Migrations completed." log "Ensuring cache table exists..." python hue_portal/manage.py createcachetable log "Cache table ready." # Skip model preload to prevent CPU overload (models will load lazily on first request) log "⏭️ Skipping model preload (CPU optimization - models will load on first request)" log "Starting Gunicorn on port ${PORT:-7860}..." exec gunicorn hue_portal.hue_portal.wsgi:application \ --bind 0.0.0.0:${PORT:-7860} \ --timeout 600 \ --workers 1 \ --worker-class sync