Containerise applications professionally: multi-stage builds that reduce image size by 95%, production Docker Compose stacks with healthchecks and persistent volumes, and Nginx reverse proxy in front of a Node.js app.
Part of the DMI Cohort 2 internship — DevOps Micro Internship by Pravin Mishra
| # | Project | Focus | Level |
|---|---|---|---|
| 01 | Multi-Stage Dockerfile — 2.12GB → 94.1MB | Dockerfile optimisation | Intermediate |
| 02 | Docker Compose — EpicBook + MySQL + Nginx | Compose, volumes, healthchecks | Intermediate |
| 03 | Compose Stack — App + Prometheus + Grafana | Observability stack | Advanced |
- Container runtime: Docker Engine
- Orchestration: Docker Compose
- Base images: node:18-alpine, nginx:alpine, mysql:8.0, prom/prometheus, grafana/grafana
- Multi-stage builds: separate builder and runtime stages
- Alpine and distroless base images for minimal attack surface
- Docker Compose: services, volumes, networks,
depends_on, healthchecks - Named volumes for database persistence
.envfile for secrets — not in Compose YAML- Nginx as reverse proxy in a Compose stack
- Prometheus and Grafana wired to a Node.js app