4.3 KiB
Deployment Options for Video Accessibility Platform
🏗 Current Docker Setup
Your docker-compose.yml serves both frontend and backend in development mode:
- Frontend: Vite dev server on port 5173 (hot reload)
- Backend: FastAPI on port 8000 (auto-reload)
- Database: MongoDB + Redis
- Workers: Celery + Change Stream service
🚀 Production Deployment Options
1. All-in-Docker Production ✅ Recommended
What it does:
- Frontend: Built React app served by Nginx (port 80)
- Backend: Production FastAPI (port 8000)
- Single
docker-compose updeployment
Usage:
# Production deployment
docker-compose -f docker-compose.prod.yml up -d
# Access:
# Frontend: http://localhost:80
# Backend API: http://localhost:8000
Benefits:
- ✅ Single command deployment
- ✅ Optimized frontend build
- ✅ Production-ready configuration
- ✅ Built-in health checks
- ✅ Nginx caching and compression
2. Single Domain with Nginx Proxy ✅ Best UX
What it does:
- Everything served from one domain (port 80)
/api/*routes to backend/*routes to frontend- WebSocket support included
Usage:
# Uses nginx/nginx.conf for routing
docker-compose -f docker-compose.prod.yml up nginx
# Access everything at: http://localhost
Benefits:
- ✅ No CORS issues
- ✅ Single domain simplicity
- ✅ Better caching control
- ✅ Rate limiting built-in
- ✅ SSL termination ready
3. Cloud-Native (Google Cloud) 🌟 Enterprise
Architecture:
Frontend (Cloud Storage + CDN) → API (Cloud Run) → Database (MongoDB Atlas)
↓
Workers (Cloud Run)
Components:
- Frontend: Build + deploy to Cloud Storage, serve via Cloud CDN
- Backend: Deploy to Cloud Run (auto-scaling)
- Workers: Separate Cloud Run service for Celery
- Database: MongoDB Atlas (managed)
- Files: Google Cloud Storage (already integrated)
Benefits:
- ✅ Auto-scaling
- ✅ Global CDN
- ✅ Managed services
- ✅ Pay-per-use
- ✅ High availability
📊 Comparison Matrix
| Option | Complexity | Cost | Scalability | Maintenance |
|---|---|---|---|---|
| Dev Docker | Low | Very Low | Limited | Manual |
| Prod Docker | Low | Low | Manual | Medium |
| Nginx Proxy | Medium | Low | Manual | Medium |
| Cloud Native | High | Variable | Automatic | Low |
🚀 Quick Migration Guide
From Development → Production Docker
-
Update environment variables:
cp .env.example .env.prod # Edit .env.prod with production values -
Deploy:
docker-compose -f docker-compose.prod.yml up -d -
Verify:
# Frontend (optimized build) curl http://localhost:80 # Backend API curl http://localhost:8000/health
From Docker → Cloud Native
-
Build frontend:
cd frontend && npm run build gsutil -m rsync -r -d dist/ gs://your-bucket/ -
Deploy backend:
gcloud run deploy video-api --source=./backend --region=us-central1 -
Deploy workers:
gcloud run deploy video-workers --source=./backend --region=us-central1
🔧 Configuration Files Created
docker-compose.prod.yml
- Production-ready Docker setup
- Nginx serving frontend
- Optimized environment variables
- Health checks included
nginx/nginx.conf
- Single-domain routing configuration
- API proxy with rate limiting
- WebSocket support
- Static file caching
- Security headers
🎯 Recommendations by Use Case
Small Team / MVP
→ Use Production Docker (docker-compose.prod.yml)
Growing Business
→ Use Nginx Proxy setup for better performance
Enterprise / Scale
→ Go Cloud Native with Google Cloud Run + CDN
🔍 Current Status
✅ Development: Already working with docker-compose up
✅ Production Docker: Ready with docker-compose.prod.yml
✅ Nginx Proxy: Configured and ready to deploy
⚠️ Cloud Native: Requires GCP setup and configuration
Your current Docker setup is development-optimized. For production, use the new docker-compose.prod.yml which properly builds and serves the React app through Nginx while keeping the backend API separate but coordinated.