6.5 KiB
6.5 KiB
Running TradingAgents with Docker
Docker provides an isolated, reproducible environment for running TradingAgents.
🚀 Quick Start
1. Prerequisites
- Docker installed
- Docker Compose installed
.envfile configured (copy from.env.example)
2. Build and Run
# Build the container
docker-compose build
# Start TradingAgents web interface
docker-compose up
# Access at http://localhost:8000
That's it! The web interface will be available at http://localhost:8000
📦 What's Included
The Docker container includes:
- ✅ Python 3.11
- ✅ All TradingAgents dependencies
- ✅ Web interface (Chainlit)
- ✅ Portfolio management
- ✅ Backtesting framework
- ✅ Broker integrations (Alpaca)
- ✅ All data providers configured
🔧 Configuration
Environment Variables
Create a .env file with your API keys:
# Copy example
cp .env.example .env
# Edit with your keys
nano .env
Required variables:
OPENAI_API_KEYorANTHROPIC_API_KEY- For LLMALPHA_VANTAGE_API_KEY- For market dataALPACA_API_KEYandALPACA_SECRET_KEY- For paper trading (optional)
Data Persistence
The following directories are mounted as volumes to persist data:
volumes:
- ./data:/app/data # Market data cache
- ./eval_results:/app/eval_results # Analysis results
- ./portfolio_data:/app/portfolio_data # Portfolio state
🎯 Usage
Web Interface (Default)
# Start web interface
docker-compose up
# Access at http://localhost:8000
Run Python Scripts
# Run a specific script
docker-compose run tradingagents python examples/portfolio_example.py
# Run tests
docker-compose run tradingagents pytest tests/ -v
# Open Python shell
docker-compose run tradingagents python
Interactive Shell
# Open bash in container
docker-compose run tradingagents bash
# Then run any commands
python examples/paper_trading_alpaca.py
pytest tests/
🔬 Optional Services
Jupyter Notebook
For interactive analysis and development:
# Start with Jupyter
docker-compose --profile jupyter up
# Access Jupyter at http://localhost:8888
🛠️ Docker Commands Reference
Building
# Build/rebuild images
docker-compose build
# Build without cache
docker-compose build --no-cache
# Build specific service
docker-compose build tradingagents
Running
# Start in foreground
docker-compose up
# Start in background (detached)
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down
# Stop and remove volumes
docker-compose down -v
Maintenance
# View running containers
docker-compose ps
# Restart services
docker-compose restart
# Remove stopped containers
docker-compose rm
# Prune unused images/volumes
docker system prune -a
🐛 Troubleshooting
Port Already in Use
If port 8000 is already in use:
# Edit docker-compose.yml
ports:
- "8001:8000" # Change 8000 to 8001 (or any free port)
Permission Issues
If you encounter permission errors:
# Fix ownership of data directories
sudo chown -R $USER:$USER data/ eval_results/ portfolio_data/
Container Won't Start
Check logs for errors:
docker-compose logs tradingagents
Common issues:
- Missing
.envfile - Invalid API keys
- Port conflicts
Out of Memory
Increase Docker memory limit:
- Docker Desktop: Settings → Resources → Memory → Increase limit
- Linux: Edit
/etc/docker/daemon.json
Clean Restart
Complete reset:
# Stop everything
docker-compose down -v
# Remove images
docker rmi tradingagents:latest
# Rebuild
docker-compose build --no-cache
# Start fresh
docker-compose up
📊 Production Deployment
Security Considerations
- Never commit
.env- Already in.gitignore - Use secrets management - Docker secrets or vault
- Network security - Use reverse proxy (nginx)
- Rate limiting - Configure Chainlit auth
- HTTPS - Use SSL certificates
Example Production Setup
# docker-compose.prod.yml
version: '3.8'
services:
tradingagents:
build: .
restart: always
env_file:
- .env.prod
environment:
- CHAINLIT_AUTH_SECRET=${CHAINLIT_AUTH_SECRET}
labels:
- "traefik.enable=true"
- "traefik.http.routers.tradingagents.rule=Host(`trading.yourdomain.com`)"
- "traefik.http.routers.tradingagents.tls=true"
Monitoring
Add monitoring with Prometheus/Grafana:
# Add to docker-compose.yml
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
grafana:
image: grafana/grafana
ports:
- "3000:3000"
🌐 Cloud Deployment
AWS ECS
# Build for AWS
docker build -t tradingagents:latest .
# Tag for ECR
docker tag tradingagents:latest YOUR_ECR_REPO/tradingagents:latest
# Push to ECR
docker push YOUR_ECR_REPO/tradingagents:latest
Google Cloud Run
# Build for Cloud Run
gcloud builds submit --tag gcr.io/YOUR_PROJECT/tradingagents
# Deploy
gcloud run deploy tradingagents \
--image gcr.io/YOUR_PROJECT/tradingagents \
--platform managed \
--region us-central1 \
--allow-unauthenticated
Digital Ocean
# Use Docker Compose on droplet
doctl compute droplet create tradingagents \
--image docker-20-04 \
--size s-2vcpu-4gb \
--region nyc1
# SSH and setup
ssh root@YOUR_DROPLET_IP
git clone YOUR_REPO
cd TradingAgents
docker-compose up -d
💡 Tips
-
Development Mode: Mount code as volume to see changes without rebuild
volumes: - ./tradingagents:/app/tradingagents -
Multiple Environments: Use different compose files
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -
Resource Limits: Prevent runaway containers
deploy: resources: limits: cpus: '2' memory: 4G -
Health Checks: Monitor container health
healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000"] interval: 30s timeout: 10s retries: 3