Unit 4: Dockerizing Real Applications & Labs

Part F: Dockerizing Real Applications

1. Pattern & Node.js Example

Pattern: Base image → WORKDIR → requirements copy/install → source copy → EXPOSE → CMD.

FROM node:22
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
EXPOSE 3000
CMD ["npm","start"]
Hinglish: npm ci use karo package-lock.json ke liye taaki reproducible installs ho.

2. Databases (MongoDB, PostgreSQL, MySQL, Redis)

Use a separate database service in Compose, persist data with a named volume, and connect using the Compose service name (e.g. mongodb://mongo:27017, not localhost).

Part Q: Complete Python/Flask Lab

Follow this step-by-step to dockerize a simple Python API.

1. Create Files

app.py:

from flask import Flask
app = Flask(__name__)
@app.route("/")
def home():
    return "Hello from Docker!"
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

requirements.txt:

Flask

Dockerfile:

FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
EXPOSE 8000
CMD ["python", "app.py"]

.dockerignore:

__pycache__
*.pyc
.venv

2. Build, Run & Test

docker build -t my-python-app:1.0 .
docker run -d --name python-demo -p 8000:8000 my-python-app:1.0
docker logs python-demo

Open http://localhost:8000. Expect "Hello from Docker!".

Part R: Complete Compose + Postgres Lab

This lab demonstrates running an app and a database together using Docker Compose.

1. compose.yaml

services:
  app:
    build: .
    ports:
      - "8000:8000"
    environment:
      DB_HOST: db
    depends_on:
      - db
  db:
    image: postgres:16
    environment:
      POSTGRES_DB: appdb
      POSTGRES_USER: appuser
      POSTGRES_PASSWORD: change-me
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

2. Manage Stack

docker compose up -d --build
docker compose ps
docker compose logs -f
docker compose down
Hinglish: docker compose down -v mat chalana unless aap sach me database data delete karna chahte ho. -v named volume ko hamesha ke liye uda dega.