| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- version: '3.8'
- services:
- # RAG 应用服务
- app:
- container_name: rag-system-app
- build:
- context: ..
- dockerfile: docker/Dockerfile
- target: production # 使用生产环境镜像
- restart: unless-stopped
- ports:
- - "8000:8000"
- volumes:
- - ../.env:/app/.env:ro # 只读挂载环境变量
- - ../logs:/app/logs # 日志目录
- environment:
- - TZ=Asia/Shanghai
- - DB_HOST=postgres
- - INFINITY_HOST=infinity
- - REDIS_HOST=redis
- depends_on:
- postgres:
- condition: service_healthy
- infinity:
- condition: service_started
- redis:
- condition: service_healthy
- networks:
- - rag-network
- healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
- interval: 30s
- timeout: 10s
- retries: 3
- start_period: 40s
- # PostgreSQL 数据库
- postgres:
- image: postgres:15-alpine
- container_name: rag-system-postgres
- restart: unless-stopped
- ports:
- - "5432:5432"
- environment:
- - POSTGRES_DB=rag_system
- - POSTGRES_USER=rag_user
- - POSTGRES_PASSWORD=rag_password
- - TZ=Asia/Shanghai
- volumes:
- - postgres-data:/var/lib/postgresql/data
- - ../doc/sql:/docker-entrypoint-initdb.d:ro # 初始化脚本
- networks:
- - rag-network
- healthcheck:
- test: ["CMD-SHELL", "pg_isready -U rag_user -d rag_system"]
- interval: 10s
- timeout: 5s
- retries: 5
- # Infinity 向量数据库
- infinity:
- image: infiniflow/infinity:latest
- container_name: rag-system-infinity
- restart: unless-stopped
- ports:
- - "23817:23817"
- volumes:
- - infinity-data:/var/infinity/data
- environment:
- - TZ=Asia/Shanghai
- networks:
- - rag-network
- # Redis 缓存(可选)
- redis:
- image: redis:7-alpine
- container_name: rag-system-redis
- restart: unless-stopped
- ports:
- - "6379:6379"
- volumes:
- - redis-data:/data
- command: redis-server --appendonly yes
- networks:
- - rag-network
- healthcheck:
- test: ["CMD", "redis-cli", "ping"]
- interval: 10s
- timeout: 5s
- retries: 5
- volumes:
- postgres-data:
- driver: local
- infinity-data:
- driver: local
- redis-data:
- driver: local
- networks:
- rag-network:
- driver: bridge
|