This project involves containerizing a traditional, multi-tier Java web application using Docker and Docker Compose. The primary objective is to replicate a production-grade architecture that transitions from virtual machine-based monolith deployments to a lightweight, scalable, and portable containerized model.
By isolating services and using Docker best practices (e.g. multi-stage builds, service orchestration, image optimization), we improve resource utilization, simplify deployments, and align with microservices principles.
Before containerization, the application ran across virtual machines using a typical n-tier architecture. Though functional, this model suffered from several significant limitations: