Project Details

Automated CI/CD Pipeline for user profile web App.

Built an automated CI/CD pipeline using Docker and Jenkins to reliably build, test, and run a Node.js application with MongoDB.

🧩 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)

Using Docker-based environment so everything runs the same everywhere regardless of the OS of the user, I spin up 3 containers of which includes;
  • 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.

Jenkins pipeline automatically building and testing the application using Docker.

🛠️ 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