MinAI - Về trang chủ
Lý thuyết
7/1335 phút
Đang tải...

Docker Compose va Multi-service

Quan ly nhieu services voi Docker Compose - API, Redis, database, monitoring

0

🎯 Mục tiêu bài học

TB5 min

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

1

📐 Multi-service Architecture

TB5 min
Diagram
Đang vẽ diagram...

Checkpoint

Bạn đã hiểu các services cần thiết trong một AI deployment stack chưa?

2

🛠️ Docker Compose Setup

TB5 min
yaml
1# docker-compose.yml
2services:
3 api:
4 build: .
5 ports:
6 - "8000:8000"
7 environment:
8 - OPENAI_API_KEY=${OPENAI_API_KEY}
9 - REDIS_URL=redis://redis:6379
10 - DATABASE_URL=postgresql://user:pass@postgres:5432/aidb
11 depends_on:
12 redis:
13 condition: service_healthy
14 postgres:
15 condition: service_healthy
16 restart: unless-stopped
17 deploy:
18 resources:
19 limits:
20 memory: 2G
21 cpus: "2"
22
23 redis:
24 image: redis:7-alpine
25 ports:
26 - "6379:6379"
27 volumes:
28 - redis-data:/data
29 healthcheck:
30 test: ["CMD", "redis-cli", "ping"]
31 interval: 10s
32 timeout: 5s
33 retries: 3
34
35 postgres:
36 image: postgres:16-alpine
37 environment:
38 POSTGRES_USER: user
39 POSTGRES_PASSWORD: pass
40 POSTGRES_DB: aidb
41 volumes:
42 - pg-data:/var/lib/postgresql/data
43 healthcheck:
44 test: ["CMD-SHELL", "pg_isready -U user"]
45 interval: 10s
46 timeout: 5s
47 retries: 3
48
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?

3

💻 Compose Commands

TB5 min
Bash
1# Start all services
2docker compose up -d
3
4# View logs
5docker compose logs -f api
6
7# Scale API servers
8docker compose up -d --scale api=3
9
10# Stop
11docker compose down
12
13# Rebuild
14docker compose up -d --build

Checkpoint

Bạn đã nắm được các Docker Compose commands cơ bản chưa?

4

📐 Adding Nginx Load Balancer

TB5 min
yaml
1# Them vao docker-compose.yml
2 nginx:
3 image: nginx:alpine
4 ports:
5 - "80:80"
6 volumes:
7 - ./nginx.conf:/etc/nginx/nginx.conf:ro
8 depends_on:
9 - api
nginx
1# nginx.conf
2events {
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 support
19 }
20 }
21}

Checkpoint

Bạn đã hiểu cách thêm Nginx reverse proxy vào Docker Compose chưa?

5

🛠️ Environment Management

TB5 min
Bash
1# .env
2OPENAI_API_KEY=sk-xxx
3POSTGRES_PASSWORD=securepassword123
4REDIS_PASSWORD=redispass
5LOG_LEVEL=info
yaml
1# docker-compose.override.yml (development)
2services:
3 api:
4 build:
5 context: .
6 dockerfile: Dockerfile.dev
7 volumes:
8 - ./app:/app/app # Hot reload
9 environment:
10 - LOG_LEVEL=debug

Checkpoint

Bạn đã hiểu cách quản lý environments cho development và production chưa?

6

📊 Monitoring Stack

TB5 min
yaml
1# docker-compose.monitoring.yml
2services:
3 prometheus:
4 image: prom/prometheus
5 volumes:
6 - ./prometheus.yml:/etc/prometheus/prometheus.yml
7 ports:
8 - "9090:9090"
9
10 grafana:
11 image: grafana/grafana
12 ports:
13 - "3000:3000"
14 volumes:
15 - grafana-data:/var/lib/grafana
16 depends_on:
17 - prometheus
18
19volumes:
20 grafana-data:
Bash
1# Run voi monitoring
2docker compose -f docker-compose.yml -f docker-compose.monitoring.yml up -d

Checkpoint

Bạn đã hiểu cách thêm monitoring stack với Prometheus và Grafana chưa?

7

🚀 Production Docker Compose

TB5 min
yaml
1# docker-compose.prod.yml
2services:
3 api:
4 image: registry.example.com/ai-api:${VERSION}
5 deploy:
6 replicas: 2
7 resources:
8 limits:
9 memory: 2G
10 cpus: "2"
11 restart_policy:
12 condition: on-failure
13 delay: 5s
14 max_attempts: 3
15 healthcheck:
16 test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
17 interval: 30s
18 timeout: 10s
19 retries: 3

Checkpoint

Bạn đã hiểu cách cấu hình Docker Compose cho production chưa?

8

🎯 Tổng kết

TB5 min

Bài tập thực hành

Hands-on Exercise
  1. Setup Docker Compose với API + Redis + PostgreSQL
  2. Add Nginx load balancer
  3. Implement health checks cho mỗi service
  4. Test scaling (2-3 API instances)

Target: Full stack AI deployment với docker compose

Câu hỏi tự kiểm tra

  1. Docker Compose giải quyết vấn đề gì so với việc chạy từng container riêng lẻ? depends_on hoạt động như thế nào?
  2. 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?
  3. 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?
  4. 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.


🚀 Bài tiếp theo

Monitoring va Observability →