🎯 Mục tiêu bài học
AI applications thường cần nhiều services: API server, cache, database, monitoring. Docker Compose giúp quản lý tất cả.
Sau bài này, bạn sẽ:
✅ Hiểu multi-service architecture cho AI apps ✅ Viết Docker Compose file với nhiều services ✅ Setup Nginx load balancer ✅ Quản lý environments và monitoring stack ✅ Cấu hình production Docker Compose
📐 Multi-service Architecture
Checkpoint
Bạn đã hiểu các services cần thiết trong một AI deployment stack chưa?
🛠️ Docker Compose Setup
1# docker-compose.yml2services:3 api:4 build: .5 ports:6 - "8000:8000"7 environment:8 - OPENAI_API_KEY=${OPENAI_API_KEY}9 - REDIS_URL=redis://redis:637910 - DATABASE_URL=postgresql://user:pass@postgres:5432/aidb11 depends_on:12 redis:13 condition: service_healthy14 postgres:15 condition: service_healthy16 restart: unless-stopped17 deploy:18 resources:19 limits:20 memory: 2G21 cpus: "2"22 23 redis:24 image: redis:7-alpine25 ports:26 - "6379:6379"27 volumes:28 - redis-data:/data29 healthcheck:30 test: ["CMD", "redis-cli", "ping"]31 interval: 10s32 timeout: 5s33 retries: 334 35 postgres:36 image: postgres:16-alpine37 environment:38 POSTGRES_USER: user39 POSTGRES_PASSWORD: pass40 POSTGRES_DB: aidb41 volumes:42 - pg-data:/var/lib/postgresql/data43 healthcheck:44 test: ["CMD-SHELL", "pg_isready -U user"]45 interval: 10s46 timeout: 5s47 retries: 348 49volumes:50 redis-data:51 pg-data:Checkpoint
Bạn đã hiểu cách cấu hình Docker Compose với nhiều services chưa?
💻 Compose Commands
1# Start all services2docker compose up -d3 4# View logs5docker compose logs -f api6 7# Scale API servers8docker compose up -d --scale api=39 10# Stop11docker compose down12 13# Rebuild14docker compose up -d --buildCheckpoint
Bạn đã nắm được các Docker Compose commands cơ bản chưa?
📐 Adding Nginx Load Balancer
1# Them vao docker-compose.yml2 nginx:3 image: nginx:alpine4 ports:5 - "80:80"6 volumes:7 - ./nginx.conf:/etc/nginx/nginx.conf:ro8 depends_on:9 - api1# nginx.conf2events {3 worker_connections 1024;4}5 6http {7 upstream api_servers {8 server api:8000;9 }10 11 server {12 listen 80;13 14 location / {15 proxy_pass http://api_servers;16 proxy_set_header Host $host;17 proxy_set_header X-Real-IP $remote_addr;18 proxy_buffering off; # SSE streaming support19 }20 }21}Checkpoint
Bạn đã hiểu cách thêm Nginx reverse proxy vào Docker Compose chưa?
🛠️ Environment Management
1# .env2OPENAI_API_KEY=sk-xxx3POSTGRES_PASSWORD=securepassword1234REDIS_PASSWORD=redispass5LOG_LEVEL=info1# docker-compose.override.yml (development)2services:3 api:4 build:5 context: .6 dockerfile: Dockerfile.dev7 volumes:8 - ./app:/app/app # Hot reload9 environment:10 - LOG_LEVEL=debugCheckpoint
Bạn đã hiểu cách quản lý environments cho development và production chưa?
📊 Monitoring Stack
1# docker-compose.monitoring.yml2services:3 prometheus:4 image: prom/prometheus5 volumes:6 - ./prometheus.yml:/etc/prometheus/prometheus.yml7 ports:8 - "9090:9090"9 10 grafana:11 image: grafana/grafana12 ports:13 - "3000:3000"14 volumes:15 - grafana-data:/var/lib/grafana16 depends_on:17 - prometheus18 19volumes:20 grafana-data:1# Run voi monitoring2docker compose -f docker-compose.yml -f docker-compose.monitoring.yml up -dCheckpoint
Bạn đã hiểu cách thêm monitoring stack với Prometheus và Grafana chưa?
🚀 Production Docker Compose
1# docker-compose.prod.yml2services:3 api:4 image: registry.example.com/ai-api:${VERSION}5 deploy:6 replicas: 27 resources:8 limits:9 memory: 2G10 cpus: "2"11 restart_policy:12 condition: on-failure13 delay: 5s14 max_attempts: 315 healthcheck:16 test: ["CMD", "curl", "-f", "http://localhost:8000/health"]17 interval: 30s18 timeout: 10s19 retries: 3Checkpoint
Bạn đã hiểu cách cấu hình Docker Compose cho production chưa?
🎯 Tổng kết
Bài tập thực hành
- Setup Docker Compose với API + Redis + PostgreSQL
- Add Nginx load balancer
- Implement health checks cho mỗi service
- Test scaling (2-3 API instances)
Target: Full stack AI deployment với docker compose
Câu hỏi tự kiểm tra
- Docker Compose giải quyết vấn đề gì so với việc chạy từng container riêng lẻ?
depends_onhoạt động như thế nào? - Trong một AI deployment stack, các services thường bao gồm những gì (API, Redis, PostgreSQL, Nginx) và chúng giao tiếp với nhau ra sao?
- Health checks trong Docker Compose cần được cấu hình như thế nào cho mỗi service? Tại sao chúng quan trọng cho production?
- Làm thế nào để scale API instances với Docker Compose và sử dụng restart policy để tăng reliability?
🎉 Tuyệt vời! Bạn đã hoàn thành bài học Docker Compose & Multi-service!
Tiếp theo: Chúng ta sẽ học Monitoring và Observability để theo dõi AI systems trong production.
