Hands-on labs and courseware for the WSQ course Application Integration with Docker and Kubernetes by Tertiary Infotech Academy Pte. Ltd.
Course Code: TGS-2021010366 · Duration: 2 days (9:00 AM – 6:00 PM, 8 training hours/day)
Course Code: TGS-2021010366 Register: https://www.tertiarycourses.com.sg/wsq-application-integration-with-docker-and-kubernetes.html
Throughout the course you build and deploy one realistic application — TaskBoard, a Flask
task-tracker backed by Redis and PostgreSQL — taking it from a single container, to a
multi-service Docker Compose stack, to a scalable Kubernetes deployment. The shared app lives
in labs/app/.
Day 1 — Docker: fundamentals & commands · Dockerfile & image build · CMD vs ENTRYPOINT · storage (volumes & bind mounts) · networking · configuration · Docker Hub · Docker Compose.
Day 2 — Kubernetes: Pods · Namespaces · Deployments · rolling updates & rollbacks · Services · storage (PV/PVC) · Jobs & CronJobs.
| Lab | Topic | What you build |
|---|---|---|
| 01 | Docker commands | Run & manage an nginx web server (run/ps/logs/exec/stop/rm) |
| 02 | Docker commands | Pull images, docker cp a served file, inspect a container |
| 03 | Docker build / Dockerfile | Build the TaskBoard Flask image |
| 04 | Dockerfile best practices | .dockerignore + cache-friendly layer ordering |
| 05 | CMD vs ENTRYPOINT | Package taskboard-cli (fixed ENTRYPOINT, overridable CMD) |
| 06 | Storage | Persist TaskBoard data with a named volume + bind mount |
| 07 | Networking | TaskBoard ↔ Redis by DNS on a custom bridge network |
| 08 | Environment variables | Configure TaskBoard via ENV / -e / --env-file |
| 09 | Docker Hub | Tag, push and pull the TaskBoard image |
| 10 | Docker Compose | TaskBoard as a single Compose service |
| 11 | Docker Compose | TaskBoard + Redis (visit counter) |
| 12 | Docker Compose | TaskBoard + PostgreSQL + Redis with healthchecks |
| Lab | Topic | What you build |
|---|---|---|
| 13 | Pods | Create/inspect Pods imperatively & declaratively |
| 14 | Namespaces | Isolate a dev environment |
| 15 | Deployments | Scale and self-heal a Deployment |
| 16 | Rolling updates & rollbacks | Zero-downtime update, then roll back |
| 17 | Services | ClusterIP (internal) + NodePort (external) |
| 18 | Storage | emptyDir + PersistentVolume / PVC |
| 19 | Jobs & CronJobs | Batch Job + scheduled CronJob |
Each lab folder has a step-by-step lab.md plus its working files. Every lab also runs in the
browser on KillerCoda (link at the top of each lab.md). Practical assessments are in
labs/assessments/.
The courseware/ folder holds the generated deliverables — all kept 100% in
sync from one source:
- Slides —
Application-Integration-with-Docker-and-Kubernetes-v21.pptx/.pdf - Lesson Plan —
LP-Application-Integration-with-Docker-and-Kubernetes.docx/.pdf - Learner Guide —
LG-Application-Integration-with-Docker-and-Kubernetes.docx/.pdf(and the Markdown mirrorLG-Application-Integration-with-Docker-and-Kubernetes.md)
The slides, labs, Lesson Plan and Learner Guide are all generated from a single canonical
content module so they never drift apart. The build pipeline is the courseware-build
skill (.claude/skills/courseware-build/) — edit
labs_data.py and re-run the generators to update everything.
# Start with Docker lab 1
cd labs/lab01-docker-commands
# follow the steps in lab.md — or open the KillerCoda link in your browser- Docker Desktop (Docker Engine + Compose)
- kubectl and a local cluster (minikube / kind) for Day 2 — or just use KillerCoda
- A free Docker Hub account (Lab 9)