TradingAgents/deploy.sh

179 lines
5.4 KiB
Bash
Executable File

#!/bin/bash
# TradingAgents Deployment Helper Script
# This script helps prepare your project for deployment
set -e
echo "🚀 TradingAgents Deployment Helper"
echo "=================================="
echo ""
# Check if .env file exists
if [ ! -f .env ]; then
echo "⚠️ No .env file found. Creating from .env.example..."
cp .env.example .env
echo "✅ Created .env file. Please edit it with your API keys."
echo ""
fi
# Function to check if API key is set
check_api_key() {
local key_name=$1
local key_value=$(grep "^${key_name}=" .env | cut -d '=' -f2)
local key_placeholder=$(echo "$key_name" | tr '[:upper:]' '[:lower:]')_placeholder
if [ -z "$key_value" ] || [ "$key_value" = "$key_placeholder" ]; then
echo "$key_name is not set"
return 1
else
echo "$key_name is set"
return 0
fi
}
echo "Checking required API keys..."
echo ""
# Check required keys
OPENAI_OK=false
ALPHA_OK=false
if check_api_key "OPENAI_API_KEY"; then
OPENAI_OK=true
fi
if check_api_key "ALPHA_VANTAGE_API_KEY"; then
ALPHA_OK=true
fi
echo ""
if [ "$OPENAI_OK" = false ] || [ "$ALPHA_OK" = false ]; then
echo "⚠️ API keys are missing in .env file."
echo " You can proceed if you intend to use BYOK (Bring Your Own Key) mode,"
echo " where users must enter their keys in the frontend."
echo ""
read -p "Do you want to proceed with BYOK mode? (y/n) " -n 1 -r
echo ""
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "Please set the required API keys in .env file before deploying."
exit 1
fi
fi
echo "✅ All required API keys are configured!"
echo ""
# Display deployment options
echo "📦 Deployment Options:"
echo ""
echo "1. Vercel (Frontend) + Render (Backend) - FREE"
echo " - Best for: Personal projects, testing"
echo " - See DEPLOY.md for detailed instructions"
echo ""
echo "2. Railway - FREE tier available"
echo " - Best for: All-in-one deployment"
echo " - See DEPLOY.md for detailed instructions"
echo ""
echo "3. Docker Compose - Self-hosted"
echo " - Best for: VPS deployment"
echo " - Run: docker-compose up -d"
echo ""
# Ask user which deployment method
echo "Which deployment method would you like to use?"
echo "1) Vercel + Render (Recommended for free)"
echo "2) Railway"
echo "3) Docker Compose"
echo "4) Just show me the guide"
read -p "Enter your choice (1-4): " choice
case $choice in
1)
echo ""
echo "📖 Vercel + Render Deployment"
echo "=============================="
echo ""
echo "Step 1: Deploy Backend to Render"
echo " 1. Go to https://render.com and sign in with GitHub"
echo " 2. Click 'New +' → 'Web Service'"
echo " 3. Connect your repository"
echo " 4. Configure:"
echo " - Root Directory: backend"
echo " - Build Command: pip install -r requirements.txt"
echo " - Start Command: uvicorn app.main:app --host 0.0.0.0 --port \$PORT"
echo " 5. Add environment variables from your .env file"
echo " 6. Deploy!"
echo ""
echo "Step 2: Deploy Frontend to Vercel"
echo " 1. Go to https://vercel.com and sign in with GitHub"
echo " 2. Click 'Add New...' → 'Project'"
echo " 3. Select your repository"
echo " 4. Configure:"
echo " - Root Directory: frontend"
echo " - Framework: Next.js"
echo " 5. Add environment variable:"
echo " NEXT_PUBLIC_API_URL=<your-render-backend-url>"
echo " 6. Deploy!"
echo ""
echo "📚 For detailed instructions, see DEPLOY.md"
;;
2)
echo ""
echo "📖 Railway Deployment"
echo "===================="
echo ""
echo "1. Go to https://railway.app and sign in with GitHub"
echo "2. Click 'New Project' → 'Deploy from GitHub repo'"
echo "3. Select your repository"
echo "4. Add two services (Backend and Frontend)"
echo "5. Configure environment variables"
echo ""
echo "📚 For detailed instructions, see DEPLOY.md"
;;
3)
echo ""
echo "📖 Docker Compose Deployment"
echo "============================"
echo ""
echo "Running Docker Compose..."
if command -v docker-compose &> /dev/null; then
docker-compose up -d
echo ""
echo "✅ Services started!"
echo " - Frontend: http://localhost:3000"
echo " - Backend: http://localhost:8000"
echo ""
echo "To view logs: docker-compose logs -f"
echo "To stop: docker-compose down"
else
echo "❌ docker-compose not found. Please install Docker first."
echo " Visit: https://docs.docker.com/get-docker/"
fi
;;
4)
echo ""
echo "📚 Opening deployment guide..."
if [ -f "DEPLOY.md" ]; then
if command -v open &> /dev/null; then
open DEPLOY.md
elif command -v xdg-open &> /dev/null; then
xdg-open DEPLOY.md
else
cat DEPLOY.md
fi
else
echo "❌ DEPLOY.md not found"
fi
;;
*)
echo "Invalid choice. Please run the script again."
exit 1
;;
esac
echo ""
echo "🎉 Good luck with your deployment!"