✅ Production-Ready Containerization: - Multi-stage frontend build (Vue.js + Nginx) - Optimized backend container (Node.js + Alpine) - PostgreSQL 15 with persistent storage and health checks - Custom Docker network for secure service communication ✅ Interactive Setup Wizard (setup.sh): - Beautiful CLI interface with colors and progress indicators - Automatic secure password and JWT secret generation - Complete environment configuration with validation - Domain, SSL, Azure AD, and OpenAI API setup - One-command deployment with immediate startup option ✅ Production Security & Performance: - Nginx reverse proxy with rate limiting and security headers - HTTPS/SSL support with custom certificate mounting - CORS protection and request validation - Non-root container execution for all services - Health checks and monitoring for reliability ✅ Management & Operations: - Comprehensive deploy.sh script with all common operations - Database backup and restore capabilities - Service logs management and troubleshooting tools - Docker Compose orchestration with dependency management - Development vs production environment support ✅ Enterprise Features: - Azure AD SSO integration with hybrid authentication - OpenAI API configuration and secure key management - Multi-environment support (localhost vs production) - Comprehensive documentation and troubleshooting guides - Resource optimization and performance tuning 🏗️ Architecture: - Frontend: Vue.js + Vite → Nginx (port 80/443) - Backend: Node.js + Express (internal port 3000) - Database: PostgreSQL 15 (internal port 5432) - Networking: Isolated Docker bridge network - Storage: Named volumes for data persistence 🚀 Deployment Commands: - ./setup.sh - Interactive deployment wizard - ./scripts/deploy.sh [start|stop|build|logs|status] - docker-compose up -d --build - Automatic migrations and admin user creation 🔒 Security Hardening: - Rate limiting on API endpoints (10 req/s) and auth (5 req/min) - Security headers (X-Frame-Options, CSP, HSTS) - CORS validation and origin checking - SSL/TLS encryption support - Container isolation and minimal attack surface 📚 Complete Documentation: - Comprehensive README with architecture overview - Troubleshooting guide with common issues - Development vs production configuration - Performance tuning and scaling recommendations 🎯 One-Command Production Deployment: Everything needed to deploy Ideas Generator 2025 in production with enterprise security, monitoring, and Azure AD SSO integration. 🚀 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
367 lines
No EOL
8.1 KiB
Markdown
367 lines
No EOL
8.1 KiB
Markdown
# 🚀 Ideas Generator 2025 - Docker Deployment
|
|
|
|
Complete production-ready Docker deployment for the Ideas Generator 2025 application with Azure AD SSO and hybrid authentication.
|
|
|
|
## 📋 Overview
|
|
|
|
This Docker setup provides a complete, production-ready deployment including:
|
|
|
|
- **Frontend**: Vue.js 3 + Vite (served via Nginx)
|
|
- **Backend**: Node.js + Express API server
|
|
- **Database**: PostgreSQL 15 with persistent storage
|
|
- **Proxy**: Nginx reverse proxy with SSL support
|
|
- **Authentication**: Hybrid Azure AD SSO + Password authentication
|
|
- **Security**: Production-grade security headers and rate limiting
|
|
|
|
## 🚀 Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
- Docker 20.x or higher
|
|
- Docker Compose 2.x or higher
|
|
- OpenAI API key
|
|
- Azure AD tenant access (for SSO)
|
|
|
|
### One-Command Deployment
|
|
|
|
```bash
|
|
cd docker
|
|
./setup.sh
|
|
```
|
|
|
|
The interactive setup script will guide you through:
|
|
- Domain and port configuration
|
|
- Database setup with secure credentials
|
|
- Azure AD integration
|
|
- OpenAI API configuration
|
|
- SSL/TLS setup
|
|
- Security configuration
|
|
|
|
## 📁 Architecture
|
|
|
|
```
|
|
docker/
|
|
├── docker-compose.yml # Main orchestration file
|
|
├── Dockerfile.backend # Node.js backend container
|
|
├── Dockerfile.frontend # Vue.js + Nginx frontend container
|
|
├── setup.sh # Interactive deployment wizard
|
|
├── nginx/
|
|
│ └── nginx.conf.template # Nginx configuration with variables
|
|
├── postgres/
|
|
│ └── init.sql # Database initialization
|
|
└── scripts/
|
|
├── deploy.sh # Deployment management commands
|
|
└── frontend-entrypoint.sh # Frontend container initialization
|
|
```
|
|
|
|
## 🔧 Services
|
|
|
|
### Frontend Service (`frontend`)
|
|
- **Base**: nginx:alpine
|
|
- **Port**: 80 (HTTP), 443 (HTTPS)
|
|
- **Features**:
|
|
- Production Vue.js build
|
|
- Gzip compression
|
|
- Security headers
|
|
- Rate limiting
|
|
- Health checks
|
|
|
|
### Backend Service (`backend`)
|
|
- **Base**: node:18-alpine
|
|
- **Port**: 3000 (internal)
|
|
- **Features**:
|
|
- Express.js API server
|
|
- PostgreSQL connection
|
|
- Azure AD token validation
|
|
- OpenAI API integration
|
|
- Health monitoring
|
|
|
|
### Database Service (`database`)
|
|
- **Base**: postgres:15-alpine
|
|
- **Port**: 5432 (internal)
|
|
- **Features**:
|
|
- Persistent data storage
|
|
- Automatic initialization
|
|
- Health checks
|
|
- Backup support
|
|
|
|
## ⚙️ Configuration
|
|
|
|
### Environment Variables
|
|
|
|
The setup script generates a `.env` file with all necessary configuration:
|
|
|
|
```env
|
|
# Basic Configuration
|
|
DOMAIN_NAME=your-domain.com
|
|
HTTP_PORT=80
|
|
HTTPS_PORT=443
|
|
|
|
# Database
|
|
DATABASE_NAME=ideas_gen_prod
|
|
DATABASE_USER=ideas_admin
|
|
DATABASE_PASSWORD=generated-secure-password
|
|
|
|
# Security
|
|
JWT_SECRET=generated-jwt-secret
|
|
|
|
# Azure AD
|
|
AZURE_TENANT_ID=your-tenant-id
|
|
AZURE_CLIENT_ID=your-client-id
|
|
|
|
# OpenAI
|
|
OPENAI_API_KEY=your-openai-key
|
|
|
|
# URLs
|
|
FRONTEND_URL=https://your-domain.com
|
|
BACKEND_URL=https://your-domain.com/api
|
|
CORS_ORIGIN=https://your-domain.com
|
|
```
|
|
|
|
### Manual Configuration
|
|
|
|
If you prefer manual setup, copy the example:
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
# Edit .env with your values
|
|
```
|
|
|
|
## 🚀 Deployment Commands
|
|
|
|
### Using the Management Script
|
|
|
|
```bash
|
|
# Start all services
|
|
./scripts/deploy.sh start
|
|
|
|
# Build and deploy with latest changes
|
|
./scripts/deploy.sh build
|
|
|
|
# View service status
|
|
./scripts/deploy.sh status
|
|
|
|
# View logs
|
|
./scripts/deploy.sh logs
|
|
|
|
# Stop all services
|
|
./scripts/deploy.sh stop
|
|
```
|
|
|
|
### Using Docker Compose Directly
|
|
|
|
```bash
|
|
# Start in background
|
|
docker-compose up -d
|
|
|
|
# Build and start
|
|
docker-compose up -d --build
|
|
|
|
# View logs
|
|
docker-compose logs -f
|
|
|
|
# Stop services
|
|
docker-compose down
|
|
```
|
|
|
|
## 🔒 Security Features
|
|
|
|
### Network Security
|
|
- Custom isolated Docker network
|
|
- Internal service communication
|
|
- No exposed database ports
|
|
|
|
### Web Security
|
|
- HTTPS/SSL support
|
|
- Security headers (HSTS, CSP, etc.)
|
|
- Rate limiting on API endpoints
|
|
- CORS protection
|
|
|
|
### Authentication Security
|
|
- Azure AD token validation
|
|
- JWT secret generation
|
|
- Password hashing with bcrypt
|
|
- Role-based access control
|
|
|
|
### Container Security
|
|
- Non-root user execution
|
|
- Minimal base images (Alpine Linux)
|
|
- Health checks for all services
|
|
- Resource limits and constraints
|
|
|
|
## 📊 Monitoring & Maintenance
|
|
|
|
### Health Checks
|
|
|
|
All services include health checks:
|
|
|
|
```bash
|
|
# Check all service health
|
|
docker-compose ps
|
|
|
|
# View detailed health status
|
|
docker inspect ideas-gen-backend --format='{{.State.Health.Status}}'
|
|
```
|
|
|
|
### Logs
|
|
|
|
Access logs for troubleshooting:
|
|
|
|
```bash
|
|
# All services
|
|
docker-compose logs -f
|
|
|
|
# Specific service
|
|
docker-compose logs -f backend
|
|
docker-compose logs -f frontend
|
|
docker-compose logs -f database
|
|
```
|
|
|
|
### Database Backup
|
|
|
|
```bash
|
|
# Create backup
|
|
./scripts/deploy.sh backup
|
|
|
|
# Manual backup
|
|
docker-compose exec database pg_dump -U ideas_admin ideas_gen_prod > backup.sql
|
|
```
|
|
|
|
### Updates
|
|
|
|
```bash
|
|
# Update to latest version
|
|
./scripts/deploy.sh update
|
|
|
|
# Manual update
|
|
git pull
|
|
docker-compose up -d --build
|
|
```
|
|
|
|
## 🔧 Advanced Configuration
|
|
|
|
### Custom SSL Certificates
|
|
|
|
1. Place your certificates in the SSL directory:
|
|
```bash
|
|
mkdir -p /etc/ssl/certs/ideas-gen
|
|
cp your-cert.crt /etc/ssl/certs/ideas-gen/
|
|
cp your-key.key /etc/ssl/certs/ideas-gen/
|
|
```
|
|
|
|
2. Update SSL_CERT_PATH in .env:
|
|
```env
|
|
SSL_CERT_PATH=/etc/ssl/certs/ideas-gen
|
|
```
|
|
|
|
### Custom Domain Setup
|
|
|
|
1. Configure DNS to point to your server
|
|
2. Update DOMAIN_NAME in .env
|
|
3. Restart services:
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
|
|
### Production Tuning
|
|
|
|
For high-traffic deployments, consider:
|
|
|
|
1. **Resource Limits**: Add memory/CPU limits to docker-compose.yml
|
|
2. **Load Balancing**: Use multiple backend replicas
|
|
3. **Database Tuning**: Optimize PostgreSQL settings
|
|
4. **Monitoring**: Add Prometheus/Grafana monitoring
|
|
|
|
## 🐛 Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
#### Services Won't Start
|
|
```bash
|
|
# Check logs for errors
|
|
docker-compose logs
|
|
|
|
# Check Docker daemon
|
|
docker info
|
|
|
|
# Verify disk space
|
|
df -h
|
|
```
|
|
|
|
#### Database Connection Issues
|
|
```bash
|
|
# Check database health
|
|
docker-compose exec database pg_isready -U ideas_admin
|
|
|
|
# Reset database
|
|
docker-compose down -v
|
|
docker-compose up database -d
|
|
```
|
|
|
|
#### Frontend Build Issues
|
|
```bash
|
|
# Rebuild frontend only
|
|
docker-compose build frontend
|
|
docker-compose up -d frontend
|
|
```
|
|
|
|
#### Permission Issues
|
|
```bash
|
|
# Fix Docker permissions (Linux)
|
|
sudo chown -R $USER:docker /var/run/docker.sock
|
|
```
|
|
|
|
### Performance Issues
|
|
|
|
#### Slow Response Times
|
|
1. Check system resources: `docker stats`
|
|
2. Review nginx logs: `docker-compose logs frontend`
|
|
3. Monitor database queries: `docker-compose logs database`
|
|
|
|
#### High Memory Usage
|
|
1. Optimize Node.js memory: Add `NODE_OPTIONS=--max-old-space-size=512` to backend environment
|
|
2. Tune PostgreSQL: Adjust `shared_buffers` and `work_mem`
|
|
|
|
## 🔄 Development vs Production
|
|
|
|
### Development Mode (Localhost)
|
|
- Uses HTTP only
|
|
- Relaxed CORS settings
|
|
- Debug logging enabled
|
|
- Hot reload for frontend development
|
|
|
|
### Production Mode
|
|
- HTTPS enforcement
|
|
- Strict security headers
|
|
- Compressed assets
|
|
- Rate limiting enabled
|
|
- Health monitoring
|
|
|
|
## 📚 Additional Resources
|
|
|
|
- [Docker Documentation](https://docs.docker.com/)
|
|
- [Docker Compose Reference](https://docs.docker.com/compose/)
|
|
- [Azure AD Integration Guide](../AUTHENTICATION_GUIDE.md)
|
|
- [OpenAI API Documentation](https://platform.openai.com/docs)
|
|
|
|
## 🆘 Support
|
|
|
|
For deployment issues:
|
|
|
|
1. Check the troubleshooting section above
|
|
2. Review service logs: `docker-compose logs`
|
|
3. Verify configuration: `docker-compose config`
|
|
4. Check system resources: `docker stats`
|
|
|
|
## 🏷️ Version Information
|
|
|
|
- **Docker Compose Version**: 3.8
|
|
- **Node.js Version**: 18 (Alpine)
|
|
- **PostgreSQL Version**: 15 (Alpine)
|
|
- **Nginx Version**: Latest (Alpine)
|
|
|
|
---
|
|
|
|
**Generated with [Claude Code](https://claude.ai/code)**
|
|
|
|
*This deployment setup provides enterprise-grade security, scalability, and maintainability for the Ideas Generator 2025 application.* |