168 lines
No EOL
4.3 KiB
Markdown
168 lines
No EOL
4.3 KiB
Markdown
# 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 up` deployment
|
|
|
|
**Usage:**
|
|
```bash
|
|
# 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:**
|
|
```bash
|
|
# 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
|
|
|
|
1. **Update environment variables:**
|
|
```bash
|
|
cp .env.example .env.prod
|
|
# Edit .env.prod with production values
|
|
```
|
|
|
|
2. **Deploy:**
|
|
```bash
|
|
docker-compose -f docker-compose.prod.yml up -d
|
|
```
|
|
|
|
3. **Verify:**
|
|
```bash
|
|
# Frontend (optimized build)
|
|
curl http://localhost:80
|
|
|
|
# Backend API
|
|
curl http://localhost:8000/health
|
|
```
|
|
|
|
### From Docker → Cloud Native
|
|
|
|
1. **Build frontend:**
|
|
```bash
|
|
cd frontend && npm run build
|
|
gsutil -m rsync -r -d dist/ gs://your-bucket/
|
|
```
|
|
|
|
2. **Deploy backend:**
|
|
```bash
|
|
gcloud run deploy video-api --source=./backend --region=us-central1
|
|
```
|
|
|
|
3. **Deploy workers:**
|
|
```bash
|
|
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. |