#!/bin/sh # ============================================================================= # prestart.sh — Container entrypoint for CRM System # # Responsibilities: # 1. Run Alembic DB migrations (alembic upgrade head). # 2. Start ARQ background worker in background. # 3. Start uvicorn as PID 1 (so signals like SIGTERM are forwarded correctly). # # Notes: # - `set -e` ensures the container crashes loudly if migrations fail. # - ARQ worker runs in background, uvicorn becomes PID 1. # - `--workers 1` is intentional for v1. # ============================================================================= 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 ARQ background worker..." arq app.core.worker.WorkerSettings & 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