Containerized a small TypeScript/Express API using two different Docker approaches:
Built a single-stage image as a baseline implementation (functional but large in size).
Created a multi-stage Dockerfile to produce a smaller, more secure, and production-ready image.
Applied best practices for container hardening, including reduced attack surface, minimized image size, and separation of build/runtime environments.
This task highlights knowledge of Docker, multi-stage builds, security hardening, and container optimization.