#!/usr/bin/env bash set -euo pipefail # Optional: wait for Postgres to be reachable if [[ -n "${DATABASE_HOST:-}" && -n "${DATABASE_PORT:-}" ]]; then echo "Waiting for Postgres at ${DATABASE_HOST}:${DATABASE_PORT}..." for i in {1..60}; do (echo > /dev/tcp/${DATABASE_HOST}/${DATABASE_PORT}) >/dev/null 2>&1 && break || true sleep 1 done fi # Run DB migrations (uses alembic.ini/env.py to resolve the DB URL) echo "Running Alembic migrations..." alembic upgrade head # Clear Redis page cache on deploy if [[ -n "${REDIS_URL:-}" && "${REDIS_URL}" != "no" ]]; then echo "Flushing Redis cache..." python3 -c " import redis, os r = redis.from_url(os.environ['REDIS_URL']) r.flushall() print('Redis cache cleared.') " || echo "Redis flush failed (non-fatal), continuing..." fi # Start the app # APP_MODULE can be overridden per-service (e.g. apps.market.app:app) echo "Starting Hypercorn (${APP_MODULE:-suma_browser.app.app:app})..." PYTHONUNBUFFERED=1 exec hypercorn "${APP_MODULE:-suma_browser.app.app:app}" --bind 0.0.0.0:${PORT:-8000}