This commit is contained in:
parent
16d59681b3
commit
260009e8cb
|
|
@ -1 +1 @@
|
||||||
3.10
|
3.11.9
|
||||||
|
|
|
||||||
|
|
@ -84,9 +84,12 @@ Start Command: uvicorn app.main:app --host 0.0.0.0 --port $PORT
|
||||||
OPENAI_API_KEY=your_openai_api_key_here
|
OPENAI_API_KEY=your_openai_api_key_here
|
||||||
ALPHA_VANTAGE_API_KEY=your_alpha_vantage_key_here
|
ALPHA_VANTAGE_API_KEY=your_alpha_vantage_key_here
|
||||||
TRADINGAGENTS_RESULTS_DIR=/opt/render/project/src/results
|
TRADINGAGENTS_RESULTS_DIR=/opt/render/project/src/results
|
||||||
PYTHON_VERSION=3.11
|
PYTHON_VERSION=3.11.9
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> Render 要求 `PYTHON_VERSION` 必須是完整的版本號(例如 `3.11.9`),不能只是 `3.11`。
|
||||||
|
|
||||||
#### 1.5 選擇免費方案
|
#### 1.5 選擇免費方案
|
||||||
- Instance Type: **Free**
|
- Instance Type: **Free**
|
||||||
- 點擊 "Create Web Service"
|
- 點擊 "Create Web Service"
|
||||||
|
|
|
||||||
178
deploy.sh
178
deploy.sh
|
|
@ -1,178 +0,0 @@
|
||||||
#!/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!"
|
|
||||||
|
|
@ -9,7 +9,7 @@ services:
|
||||||
startCommand: uvicorn app.main:app --host 0.0.0.0 --port $PORT
|
startCommand: uvicorn app.main:app --host 0.0.0.0 --port $PORT
|
||||||
envVars:
|
envVars:
|
||||||
- key: PYTHON_VERSION
|
- key: PYTHON_VERSION
|
||||||
value: 3.11
|
value: 3.11.9
|
||||||
- key: OPENAI_API_KEY
|
- key: OPENAI_API_KEY
|
||||||
sync: false
|
sync: false
|
||||||
- key: ALPHA_VANTAGE_API_KEY
|
- key: ALPHA_VANTAGE_API_KEY
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue