FauxDB Docker Setup
Complete guide to deploying FauxDB MongoDB-compatible database using Docker and Docker Compose
Prerequisites
Docker Requirements
- Docker 20.10+ installed
- Docker Compose 2.0+
- 2GB+ RAM available
- 5GB+ disk space
- Ports 27018, 5432, 9090 available
System Requirements
- Linux, macOS, or Windows with WSL2
- Multi-core CPU recommended
- SSD storage for better performance
- Network access for MongoDB clients
Quick Start
1. Clone and Setup
# Clone the repository
git clone https://github.com/fauxdb/fauxdb.git
cd fauxdb
# Copy environment configuration
cp docker/config/docker.env.example .env
# Edit configuration (optional)
nano .env
2. Start FauxDB
# Quick setup and start
make setup
docker-compose up -d
# Check service status
docker-compose ps
# View logs
docker-compose logs -f fauxdb
3. Test MongoDB Connection
# Connect with mongosh
mongosh mongodb://localhost:27018
# Test basic operations
use testdb
db.runCommand({ping: 1})
db.test.insertOne({message: "Hello FauxDB!"})
db.test.find()
Docker Compose Configuration
Basic docker-compose.yml
version: '3.8'
services:
postgres:
image: postgres:17
environment:
POSTGRES_DB: fauxdb
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
- ./docker/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql
networks:
- fauxdb-network
fauxdb:
build: .
ports:
- "27018:27018"
- "9090:9090"
environment:
- DATABASE_URL=postgresql://postgres:postgres@postgres:5432/fauxdb
- FAUXDB_PORT=27018
- FAUXDB_MAX_CONNECTIONS=1000
depends_on:
- postgres
volumes:
- ./config:/app/config
networks:
- fauxdb-network
volumes:
postgres_data:
networks:
fauxdb-network:
driver: bridge
Environment Variables (.env)
# PostgreSQL Configuration
POSTGRES_USER=postgres
POSTGRES_PASSWORD=your_secure_password
POSTGRES_DB=fauxdb_prod
# FauxDB Server
FAUXDB_PORT=27018
FAUXDB_MAX_CONNECTIONS=1000
FAUXDB_WORKER_THREADS=4
# Security
FAUXDB_ENABLE_SSL=false
FAUXDB_ENABLE_AUTH=false
# Monitoring
GRAFANA_PASSWORD=admin123
Development Environment
Hot Reload Development
# Start development environment
make dev
# View development logs
make dev-logs
# Open shell in container
make dev-shell
# Stop development environment
make dev-stop
Production Environment
# Start production environment
make prod
# Start with monitoring stack
make monitor
# View production logs
make prod-logs
Testing & Validation
Run Test Suite
# Run tests with Docker
make test
# Test with mongosh client
make test-mongosh
# Run performance tests
make perf-test
Database Operations
# Open PostgreSQL shell
make db-shell
# Backup database
make db-backup
# Restore database
make db-restore
Monitoring Setup
Prometheus Metrics
# Access metrics endpoint
curl http://localhost:9090/metrics
# Key metrics:
# - fauxdb_operations_total
# - fauxdb_operation_duration_seconds
# - fauxdb_connections_active
# - fauxdb_transactions_total
Health Checks
# Basic health check
curl http://localhost:9090/health
# Detailed status
curl http://localhost:9090/status
# Database connectivity
curl http://localhost:9090/db/health
Production Considerations
Security
- • Use strong passwords and secrets
- • Enable SSL/TLS for all communications
- • Use Docker secrets for sensitive data
- • Implement network segmentation
- • Regular security updates
- • Enable authentication and authorization
Performance
- • Use SSD storage for data volumes
- • Allocate sufficient CPU and memory
- • Configure PostgreSQL parameters
- • Monitor resource usage
- • Use connection pooling
- • Implement caching strategies
High Availability
- • Deploy across multiple hosts
- • Use Docker Swarm or Kubernetes
- • Implement health checks
- • Configure restart policies
- • Set up automated backups
- • Monitor service health
Backup & Recovery
- • Automated daily backups
- • Point-in-time recovery
- • Cross-region replication
- • Test restore procedures
- • Backup verification
- • Disaster recovery plan
Troubleshooting
Common Issues
Container won't start
# Check logs
docker-compose logs fauxdb
# Check port conflicts
netstat -tulpn | grep :27018
Database connection failed
# Check PostgreSQL status
docker-compose exec postgres psql -U postgres -c "SELECT version();"
# Check connection string
docker-compose exec fauxdb env | grep DATABASE_URL
MongoDB client can't connect
# Test connection
mongosh mongodb://localhost:27018 --eval "db.runCommand({ping: 1})"
# Check FauxDB status
curl http://localhost:9090/health
Next Steps
Kubernetes Deployment
Deploy FauxDB on Kubernetes for production scalability
Advanced Monitoring
Set up comprehensive monitoring with custom dashboards
Security Hardening
Implement enterprise-grade security and compliance