#!/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 only if RUN_MIGRATIONS=true (blog service only) if [[ "${RUN_MIGRATIONS:-}" == "true" ]]; then echo "Running Alembic migrations..." cd shared_lib && alembic upgrade head && cd /app fi # 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 echo "Starting Hypercorn (${APP_MODULE:-app:app})..." PYTHONUNBUFFERED=1 exec hypercorn "${APP_MODULE:-app:app}" --bind 0.0.0.0:${PORT:-8000}