🧩 Why This Project Matters
Many teams struggle with:
- “It works on my machine” problems.
- Manual and error-prone deployments processes.
- Inconsistent environments between developers, testers, and production servers.
This project shows how I solved these problems using containerization and automation, the modern DevOps teams approach.
⚙️ What I Built (High Level)
- A Node.js web application listening on port 3000.
- A MongoDB database with a UI (Mongo Express).
- A Jenkins for the CI/CD pipeline that automatically:
- builds the app
- runs tests
- Cleans up rescources
- No manual steps, no guesswork.
Docker ps output and the listening port of Node.js
UI of the user profile application, database, and Jenkins running as isolated containers.
Mongo Express providing a web interface for inspecting application data.
🏗️ How It Works (Simple View)
Code Push → Jenkins → Docker Build → Test with MongoDB → Ready to Deploy.
Jenkins runs inside Docker and orchestrates the entire process using a pipeline script.
🛠️ Tools Used
- Docker & Docker Compose
- Jenkins (CI/CD)
- Node.js (Express)
- MongoDB & Mongo Express
- GitHub
- Linux
📖 Real-Life Scenario
Imagine a small company building a user management system:
- Developers use different laptops.
- Deployments break unexpectedly.
- Debugging databases requires server access.
With this setup:
- Developers push code to GitHub.
- Jenkins automatically validates and tests the application using the jenkinsfile.
- Docker guarantees consistency.
- Mongo Express provides safe database visibility.
Result: Faster releases, automated testing and deploying, fewer failures, more confidence.
🚧 Challenges I Solved
Jenkins couldn’t run Docker commands
→ Fixed by installing Docker CLI and mounting the Docker socket to my host PC’s Docker.
App couldn’t connect to MongoDB
→ Solved using Docker networking and service names instead of localhost.
Timing issues between app and database startup
→ Managed with Docker Compose dependencies.
These are common real-world DevOps issues — and I resolved them hands-on.
🔮 What I’d Improve Next
- Deploy to cloud infrastructure (AWS / Kubernetes) so that users can access the application from the cloud instead.
- Add real automated tests.
- Push images to a container registry.
🧠 What This Shows About Me
- I understand real DevOps workflows, not just theory
- I can automate, troubleshoot, and improve systems
- I think in terms of reliability and scalability
