#!/bin/sh # ============================================================================= # prestart.sh — Container entrypoint for CRM API container # # Responsibilities: # 1. Run Alembic DB migrations (alembic upgrade head). # 2. Start uvicorn as PID 1 (so signals like SIGTERM are forwarded correctly). # # Notes: # - `set -e` ensures the container crashes loudly if migrations fail. # - The ARQ worker runs in a separate container (see worker.sh / docker-compose). # ============================================================================= set -e echo "[prestart] $(date -u +%Y-%m-%dT%H:%M:%SZ) - Running alembic upgrade head..." alembic upgrade head echo "[prestart] DB migrations completed successfully." echo "[prestart] Starting uvicorn on 0.0.0.0:8000 (workers=1)..." exec uvicorn app.main:app \ --host 0.0.0.0 \ --port 8000 \ --workers 1