48 lines
1.3 KiB
Bash
48 lines
1.3 KiB
Bash
#!/bin/bash
|
|||
|
|
set -e
|
||
|
|
|
||
|
|
# Set environment variable to prevent tokenizer deadlock warnings
|
||
|
|
export TOKENIZERS_PARALLELISM=false
|
||
|
|
|
||
|
|
# Wait for PostgreSQL to be ready
|
||
|
|
echo "Waiting for PostgreSQL..."
|
||
|
|
while ! nc -z db 5432; do
|
||
|
|
sleep 0.1
|
||
|
|
done
|
||
|
|
echo "PostgreSQL is ready!"
|
||
|
|
|
||
|
|
# Check if Firebase credentials exist, but don't create them if missing
|
||
|
|
if [ ! -z "$FIREBASE_CREDENTIALS" ] && [ ! -f "$FIREBASE_CREDENTIALS" ]; then
|
||
|
|
echo "Warning: Firebase credentials file not found at $FIREBASE_CREDENTIALS. Continuing without Firebase credentials..."
|
||
|
|
fi
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
# Preload embedding models to avoid runtime issues
|
||
|
|
echo "Preloading embedding models..."
|
||
|
|
python scripts/preload_models.py
|
||
|
|
if [ $? -eq 0 ]; then
|
||
|
|
echo "Models preloaded successfully!"
|
||
|
|
else
|
||
|
|
echo "Warning: Model preloading failed. Continuing anyway..."
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Run migrations
|
||
|
|
echo "Running database migrations..."
|
||
|
|
alembic upgrade head
|
||
|
|
|
||
|
|
# Use only 2 workers to reduce resource usage and database connection issues
|
||
|
|
WORKERS=1
|
||
|
|
|
||
|
|
# Start the application with Gunicorn
|
||
|
|
echo "Starting FastAPI application with Gunicorn ($WORKERS workers)..."
|
||
|
|
gunicorn app.main:app \
|
||
|
|
--workers $WORKERS \
|
||
|
|
--worker-class uvicorn.workers.UvicornWorker \
|
||
|
|
--bind 0.0.0.0:8000 \
|
||
|
|
--timeout 120 \
|
||
|
|
--keep-alive 5 \
|
||
|
|
--log-level info \
|
||
|
|
--access-logfile - \
|
||
|
|
--error-logfile - \
|
||
|
|
--preload
|