DEV Community

Darshan Vasani
Darshan Vasani Subscriber

Posted on

Notes & Cheatsheet: “Dockerizing an App – CKA Series #2”

Notes & Cheatsheet: “Dockerizing an App – CKA Series #2”

🎯 Goal of the video

  • Show, from scratch, how to containerise (“dockerise”) a sample Node.js app, push it to Docker Hub and run it anywhere.
  • Lays foundation for later CKA topics (pods, images, registries, best-practices).

1  Prerequisites & Sandbox options

  • Local install: Docker Desktop (Mac, Windows, Linux).
  • Zero-install alternative: Play-with-Docker (Docker-provided 4-hour sandbox).
 labs.play-with-docker.com → Start → Add new instance 
Enter fullscreen mode Exit fullscreen mode

2  Clone sample project

# create workspace mkdir day02_code && cd day02_code # pull sample “getting-started” todo app git clone https://github.com/docker/getting-started.git cd getting-started/app # contains package.json, src/, etc. 
Enter fullscreen mode Exit fullscreen mode

3  Write the Dockerfile

# ─── 1. Base image ─────────────────────────────────────────────── FROM node:18-alpine # tiny Linux + Node.js # ─── 2. Set workdir inside container ───────────────────────────── WORKDIR /app # ─── 3. Copy source code into image ────────────────────────────── COPY . . # ─── 4. Install prod deps only ─────────────────────────────────── RUN yarn install --production # ─── 5. Expose port app listens on ─────────────────────────────── EXPOSE 3000 # ─── 6. Container start-up command ─────────────────────────────── CMD ["node","src/index.js"] 
Enter fullscreen mode Exit fullscreen mode

🧩 Flow diagram

Host FS ─► docker build │ ▼ Dockerfile ──► Layered Image (base → code → deps) ──► Registry 
Enter fullscreen mode Exit fullscreen mode

4  Build image locally

docker build -t day02-todo:latest . 
Enter fullscreen mode Exit fullscreen mode

Image is now visible via: docker images or Docker-Desktop > Images.

5  Push to Docker Hub

# 1. create repo on hub: /test-repo (public is fine) # 2. tag local image for hub docker tag day02-todo:latest /test-repo:latest # 3. login and push docker login docker push /test-repo:latest 
Enter fullscreen mode Exit fullscreen mode

6  Run the container anywhere

# pull (if on fresh machine) docker pull /test-repo:latest # run detached, publish host:3000 → container:3000 docker run -d -p 3000:3000 --name todoapp /test-repo:latest 
Enter fullscreen mode Exit fullscreen mode

Open http://localhost:3000 📝✅.

7  Troubleshoot inside the container

# open an interactive shell (Alpine uses sh) docker exec -it todoapp sh # inspect files, logs, env, etc. 
Enter fullscreen mode Exit fullscreen mode

8  Key Docker CLI quick-ref

Task Command
List images docker images
List running containers docker ps
Stop & remove docker stop && docker rm
Remove image docker rmi
Clean dangling layers docker system prune

9  Next-step teaser 🐣

Image weighs 217 MB—too big for a tiny todo app!

Hint for next video: multi-stage builds and other best practices shrink it dramatically.

💡 Takeaways

  • Dockerfile = deterministic recipe → identical runtime everywhere.
  • Layered cache speeds builds & transfers.
  • Registry push/pull workflow mirrors real CI/CD pipelines.
  • Knowing basic docker build/run/exec is a must before jumping into Kubernetes objects (pods, deployments, etc.). 🎓

Top comments (0)