[Docker] Class-Lab 7.1: Understanding Docker Layered Architecture

[Docker] Class-Lab 7.2: Understanding Build Context in Docker

[Docker] Class-Lab 7.3: Working with .dockerignore to Control Build Context

[Docker] Class-Lab 7.4: Passing Environment Variables to Docker Containers

[Docker] Class-Lab 7.5: Overriding Environment Variables at Runtime

[Docker] Class-Lab 7.6: Using .env Files with Docker

[Docker] Class-Lab 7.7: Understanding CMD vs ENTRYPOINT

[Docker] Class-Lab 7.8: Introduction to Multi-Stage Builds

[Docker] Class-Lab 7.9: Implementing Multi-Stage Builds with Distroless

[Docker] Class-Lab 7.10: Integrating TypeScript into a Multi-Stage Docker Build

[Docker] Class-Lab 7.11: Updating the Multi-Stage Build for TypeScript

[Docker] 7.12: Optimizing Image Size with Smaller Base Images

[Docker] 7.13: Optimizing Docker Builds with Correct Instruction Order

[Docker] 7.14: Installing Only Production Dependencies

[Docker] 7.15: Multi-Stage Optimization with TypeScript - Separating Build from Production Dependencies

Lab: Containerize a Java App with a Distroless Image

Lab: Containerize an Express + TypeScript API with a Multi-Stage Distroless Build

Lab: Containerize a React + TypeScript App with a Distroless Multi-Stage Build