Chapter 51
AI-এর জন্য Docker
Docker for AI
🐳 'আমার মেশিনে চলে' সমস্যার শেষ
Docker AI model-কে dependency সহ container-এ pack করে — যেকোনো সার্ভারে identical চালানো যায়। GPU access-এর জন্য NVIDIA Container Toolkit।
Minimal Dockerfile (CPU)
# Dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]docker build -t iris-api .
docker run -p 8000:8000 iris-apiGPU Image (CUDA)
FROM nvidia/cuda:12.1.0-cudnn8-runtime-ubuntu22.04
RUN apt-get update && apt-get install -y python3.11 python3-pip
WORKDIR /app
COPY requirements.txt .
RUN pip install torch --index-url https://download.pytorch.org/whl/cu121
RUN pip install -r requirements.txt
COPY . .
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]docker run --gpus all -p 8000:8000 my-llmMulti-stage Build — slim image
FROM python:3.11 AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user -r requirements.txt
FROM python:3.11-slim
COPY --from=builder /root/.local /root/.local
ENV PATH=/root/.local/bin:$PATH
COPY . /app
WORKDIR /app
CMD ["uvicorn","main:app","--host","0.0.0.0","--port","8000"].dockerignore
__pycache__
*.pyc
.git
.venv
data/
checkpoints/
*.ipynbdocker-compose — API + Redis + Postgres
version: "3.9"
services:
api:
build: .
ports: ["8000:8000"]
environment:
- REDIS_URL=redis://redis:6379
depends_on: [redis, db]
deploy:
resources:
reservations:
devices: [{ capabilities: [gpu] }]
redis: { image: redis:7 }
db: { image: postgres:16, environment: { POSTGRES_PASSWORD: pw } }Best Practices
- Base image যত slim তত ভালো (alpine ছাড়া PyTorch-এ)।
- Layer cache কাজে লাগান —
requirements.txtআগে copy। - Model weights image-এ না রেখে volume/S3 থেকে load করুন।
- Non-root user দিয়ে run।
- Healthcheck define করুন।
- Image scan (Trivy) দিয়ে CVE check।
💡 Registry
Docker Hub, GHCR, ECR — CI/CD থেকে push, Kubernetes/Cloud Run pull করে deploy।
সারসংক্ষেপ
✨ এই অধ্যায়ে যা শিখলাম
- Dockerfile, GPU image, multi-stage build।
- docker-compose দিয়ে multi-service stack।
- Slim, cached, secure image-এর best practice।