
Automated CI/CD Pipeline for user profile web App.
This project features a fully automated CI/CD pipeline using Jenkins and Docker. The pipeline ensures that the Node.js application and its MongoDB database are reliably pulled from GitHub, built, thoroughly tested, and seamlessly deployed in isolated containerized environments. GitHub Repo
- Docker & Docker Compose
- Jenkins
- Node.js
- MongoDB & Mongo Express
- Git & GitHub
- Linux
🧩 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
- 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.
🏗️ How It Works
The workflow begins when a developer makes changes to the Node.js application and pushes the updated code to GitHub. Jenkins then retrieves the latest version of the code and automatically starts the CI/CD pipeline.
Jenkins uses Docker to build a consistent application environment, ensuring that the application runs with the required dependencies and configuration. The Node.js application and MongoDB database are then started in separate containers so they can work together during testing.
Once the environment is running, Jenkins executes automated tests to verify that the application works correctly with the database. If the tests complete successfully, Jenkins cleans up the temporary resources used during the process and prepares the application for deployment.
This automated workflow removes many manual steps from the development process and provides a repeatable path from code changes to a tested, deployment-ready application.
Code Push to GitHub → 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



