This project implements a scalable microservices architecture built with Docker and orchestrated using Kubernetes. It integrates multiple services including authentication, media conversion, messaging, and notifications, all connected through asynchronous communication patterns and robust data storage.
Component | Technology |
---|---|
Base Image | python:3.10-slim-bullseye |
Containers | Docker |
Orchestration | Kubernetes |
Messaging Queue | RabbitMQ |
Databases | MySQL, MongoDB |
Video Processing | moviepy (Python) |
API Gateway | Custom (Dockerized) |
Service Architecture | Microservices |
Microservice | Image | Description |
---|---|---|
Gateway | mhizterpaul/gateway |
Entry point for routing API requests |
Auth Service | mhizterpaul/auth |
Handles user authentication and sessions |
Converter Service | mhizterpaul/converter |
Converts video files to mp3 using moviepy |
Notification Service | mhizterpaul/notification |
Sends notifications (email/SMS/etc) |
-
Install Docker Desktop
- Download from: https://www.docker.com/products/docker-desktop
- Enable WSL 2 and Kubernetes in Docker settings.
- Restart your machine after installation.
-
Verify Installation
docker --version kubectl version --client
🐧 On Linux (Ubuntu/Debian-based)
- Install Docker
sudo apt update sudo apt install -y ca-certificates curl gnupg lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]
https://download.docker.com/linux/ubuntu
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io
- Add Your User to Docker Group
sudo usermod -aG docker $USER newgrp docker
- Install Kubernetes (kubectl)
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x kubectl sudo mv kubectl /usr/local/bin/
- Optional: Install Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube minikube start
📂 Clone the Project
git clone https://github.com/mhizterpaul/your-project-repo.git cd your-project-repo
🐳 Docker Usage
Use Prebuilt Docker Images
docker pull mhizterpaul/gateway docker pull mhizterpaul/auth docker pull mhizterpaul/converter docker pull mhizterpaul/notification
OR Build from Dockerfiles (Based on python:3.10-slim-bullseye)
docker build -t mhizterpaul/gateway ./gateway docker build -t mhizterpaul/auth ./auth docker build -t mhizterpaul/converter ./converter docker build -t mhizterpaul/notification ./notification
⚙️ Kubernetes Deployment
Supported on both Docker Desktop (Windows/macOS) and Minikube (Linux)
kubectl apply -f k8s/
Check service health:
kubectl get pods kubectl get services
🔄 Converter Service: Video to MP3
Uses moviepy and ffmpeg to extract audio from uploaded video files.
📨 Notification Service
Supports Email and SMS delivery. Configuration is handled via environment variables or ConfigMaps.
🗄️ Data Layer
MySQL: Relational database (e.g., users, auth)
MongoDB: NoSQL for metadata, logs
RabbitMQ: Queuing for inter-service messaging
📌 Notes
All services are containerized using python:3.10-slim-bullseye.
Kubernetes manages internal networking between services.
You may customize the Dockerfiles and Kubernetes specs to fit specific deployment environments.
🤝 Contributing
Fork the repo, open pull requests, or submit issues.
📄 License
MIT License