Kyun Seekhna Zaroori Hai?
Docker se same code har jagah chalta hai � local, cloud, production sab mein same behavior. "Works on my machine" problem khatam! Docker aapke app ke saare dependencies aur environment ko ek box (container) mein pack karta hai jo kahin bhi chalega.
Prerequisite:
Ye lesson API Development ke baad seekhna best hai. FastAPI basics aur deployment concepts samajhna zaroori hai.
Core Concepts
IMAGE
Blueprint ya template. Ye aapke app ka read-only copy hai � jaise building ka map. Ye build hota hai aur registry mein store hota hai.
CONTAINER
Running instance of image. Jab image chalta hai to container banta hai. Ye aapke app ka live version hai jo actually kaam karta hai.
DOCKERFILE
Build instructions. Ye ek text file hai jo batata hai image kaise banani hai � kaunsa base image, kya install karna, kya copy karna.
COMPOSE
Multi-container setup. Ek se zyada containers ko manage karna � jaise API server + database + cache sab saath chalana.
Dockerfile Example
Ye ek Python FastAPI app ka Dockerfile hai. Har instruction samajhte hain:
# Base image choose karo
FROM python:3.9-slim
# Working directory set karo
WORKDIR /app
# Pehle requirements copy karo (caching ke liye)
COPY requirements.txt .
# Dependencies install karo
RUN pip install -r requirements.txt
# Baaki code copy karo
COPY . .
# Port expose karo
EXPOSE 8000
# App start karo
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Build image:
docker build -t my-api .Run container:
docker run -p 8000:8000 my-apiList containers:
docker psStop container:
docker stop <container-id>
Docker Compose - Multi Container
Ek se zyada containers ko ek saath manage karna ho to Compose use karo. Ye ek YAML file se sab handle karta hai:
version: '3.8'
services:
api:
build: .
ports:
- "8000:8000"
depends_on:
- redis
environment:
- REDIS_HOST=redis
redis:
image: redis:alpine
ports:
- "6379:6379"
Start sab:
docker-compose up -dStop sab:
docker-compose downLogs dekho:
docker-compose logs -fStatus check:
docker-compose ps
Interactive Editor
Apna Dockerfile build karo aur test karo:
Exercise
Ye question aapko samajhna chahiye Docker ke liye: