83 lines
2.4 KiB
Bash
83 lines
2.4 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
# Production deployment script for AI Service
|
||
|
|
# This script deploys the AI service in a production environment
|
||
|
|
|
||
|
|
# Exit on error
|
||
|
|
set -e
|
||
|
|
|
||
|
|
echo "Starting AI Service deployment..."
|
||
|
|
|
||
|
|
# Check if virtual environment exists
|
||
|
|
if [ ! -d "venv" ]; then
|
||
|
|
echo "Creating virtual environment..."
|
||
|
|
python3 -m venv venv
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Activate virtual environment
|
||
|
|
source venv/bin/activate
|
||
|
|
|
||
|
|
# Install dependencies
|
||
|
|
echo "Installing dependencies..."
|
||
|
|
pip install --upgrade pip
|
||
|
|
pip install -r ai_service/requirements.txt
|
||
|
|
|
||
|
|
# Check if .env file exists, if not copy from .env.production
|
||
|
|
if [ ! -f "ai_service/.env" ]; then
|
||
|
|
echo "Creating .env file from .env.production..."
|
||
|
|
cp ai_service/.env.production ai_service/.env
|
||
|
|
echo "Please edit ai_service/.env to add your API keys before continuing."
|
||
|
|
echo "Then run this script again."
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Create data directory if it doesn't exist
|
||
|
|
mkdir -p ai_service/data
|
||
|
|
|
||
|
|
# Check if Pinecone API key is set
|
||
|
|
PINECONE_API_KEY=$(grep PINECONE_API_KEY ai_service/.env | cut -d '=' -f2)
|
||
|
|
if [ "$PINECONE_API_KEY" = "your-pinecone-api-key-here" ]; then
|
||
|
|
echo "Warning: Pinecone API key not set. Vector storage will not be available."
|
||
|
|
echo "Edit ai_service/.env to set your Pinecone API key."
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Check if OpenAI API key is set
|
||
|
|
OPENAI_API_KEY=$(grep OPENAI_API_KEY ai_service/.env | cut -d '=' -f2)
|
||
|
|
if [ "$OPENAI_API_KEY" = "your-openai-api-key-here" ]; then
|
||
|
|
echo "Warning: OpenAI API key not set. AI responses will be placeholders."
|
||
|
|
echo "Edit ai_service/.env to set your OpenAI API key."
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Stop any existing service
|
||
|
|
echo "Stopping any existing AI service..."
|
||
|
|
pkill -f "uvicorn ai_service.run:app" || true
|
||
|
|
|
||
|
|
# Start the service with nohup
|
||
|
|
echo "Starting AI service..."
|
||
|
|
cd $(dirname "$0")
|
||
|
|
nohup uvicorn ai_service.run:app --host 0.0.0.0 --port 5251 > ai_service.log 2>&1 &
|
||
|
|
|
||
|
|
# Wait for service to start
|
||
|
|
sleep 2
|
||
|
|
|
||
|
|
# Check if service is running
|
||
|
|
if pgrep -f "uvicorn ai_service.run:app" > /dev/null; then
|
||
|
|
echo "AI service started successfully!"
|
||
|
|
echo "Service is running on http://0.0.0.0:5251"
|
||
|
|
echo "Logs are available in ai_service.log"
|
||
|
|
else
|
||
|
|
echo "Failed to start AI service. Check ai_service.log for details."
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Test the service
|
||
|
|
echo "Testing service health..."
|
||
|
|
if curl -s http://localhost:5251/health | grep -q "healthy"; then
|
||
|
|
echo "Service is healthy!"
|
||
|
|
else
|
||
|
|
echo "Service health check failed. Check ai_service.log for details."
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "Deployment complete!"
|