|
|
3 maanden geleden | |
|---|---|---|
| .. | ||
| Dockerfile | 3 maanden geleden | |
| README.md | 3 maanden geleden | |
| docker-compose.dev.yml | 3 maanden geleden | |
| docker-compose.yml | 3 maanden geleden | |
| start.bat | 3 maanden geleden | |
| start.sh | 3 maanden geleden | |
本目录包含 RAG 系统的 Docker 配置文件。
Dockerfile: 多阶段构建的 Docker 镜像定义
base: 基础镜像,包含系统依赖和 Python 包development: 开发环境镜像,包含开发工具和热重载production: 生产环境镜像,优化的多 worker 配置docker-compose.yml: 生产环境的 Docker Compose 配置docker-compose.dev.yml: 开发环境的 Docker Compose 配置start.sh: Linux/macOS 启动脚本start.bat: Windows 启动脚本# Linux/macOS
./docker/start.sh dev
# Windows
docker\start.bat dev
# 或直接使用 docker-compose
docker-compose -f docker/docker-compose.dev.yml up -d
开发环境包含:
访问地址:
# Linux/macOS
./docker/start.sh prod
# Windows
docker\start.bat prod
# 或直接使用 docker-compose
docker-compose -f docker/docker-compose.yml up -d
生产环境包含:
# 构建开发环境镜像
docker build -f docker/Dockerfile --target development -t rag-system:dev .
# 构建生产环境镜像
docker build -f docker/Dockerfile --target production -t rag-system:prod .
# 启动所有服务
docker-compose -f docker/docker-compose.yml up -d
# 启动特定服务
docker-compose -f docker/docker-compose.yml up -d app postgres
# 查看日志
docker-compose -f docker/docker-compose.yml logs -f
# 查看特定服务日志
docker-compose -f docker/docker-compose.yml logs -f app
# 停止所有服务
docker-compose -f docker/docker-compose.yml down
# 停止并删除数据卷
docker-compose -f docker/docker-compose.yml down -v
# 进入应用容器
docker exec -it rag-system-app bash
# 运行迁移
alembic upgrade head
# 或者从宿主机运行
docker-compose -f docker/docker-compose.yml exec app alembic upgrade head
# 进入开发环境容器
docker exec -it rag-system-app-dev bash
# 运行测试
pytest
# 运行带覆盖率的测试
pytest --cov=src --cov-report=html
在项目根目录创建 .env 文件:
# 应用配置
APP_NAME=RAG System
DEBUG=false
LOG_LEVEL=INFO
# 数据库配置(Docker 环境)
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=rag_system
DB_USERNAME=rag_user
DB_PASSWORD=rag_password
# 向量数据库配置
VECTOR_DB_TYPE=infinity
INFINITY_HOST=infinity
INFINITY_PORT=23817
# Redis 配置
REDIS_HOST=redis
REDIS_PORT=6379
| 服务 | 端口 | 说明 |
|---|---|---|
| RAG 应用 | 8000 | API 服务 |
| PostgreSQL | 5432 | 关系数据库 |
| Infinity | 23817 | 向量数据库 |
| Redis | 6379 | 缓存服务 |
| pgAdmin | 5050 | 数据库管理(仅开发环境) |
Docker Compose 使用命名卷来持久化数据:
postgres-data: PostgreSQL 数据infinity-data: Infinity 向量数据redis-data: Redis 数据查看数据卷:
docker volume ls
备份数据卷:
# 备份 PostgreSQL
docker exec rag-system-postgres pg_dump -U rag_user rag_system > backup.sql
# 恢复 PostgreSQL
docker exec -i rag-system-postgres psql -U rag_user rag_system < backup.sql
所有服务都配置了健康检查:
# 查看服务健康状态
docker-compose -f docker/docker-compose.yml ps
# 检查应用健康
curl http://localhost:8000/health
# 检查数据库健康
docker exec rag-system-postgres pg_isready -U rag_user
# 检查 Redis 健康
docker exec rag-system-redis redis-cli ping
检查日志:
docker-compose -f docker/docker-compose.yml logs app
检查环境变量:
docker-compose -f docker/docker-compose.yml exec app env
检查数据库连接:
docker-compose -f docker/docker-compose.yml exec app python -c "from src.config.settings import get_settings; print(get_settings().database.url)"
确保数据库服务已启动:
docker-compose -f docker/docker-compose.yml ps postgres
测试数据库连接:
docker exec rag-system-postgres psql -U rag_user -d rag_system -c "SELECT 1"
检查 Infinity 服务状态:
docker-compose -f docker/docker-compose.yml ps infinity
查看 Infinity 日志:
docker-compose -f docker/docker-compose.yml logs infinity
调整 worker 数量:
编辑 Dockerfile,修改 CMD 中的 --workers 参数:
CMD ["uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "8"]
配置资源限制:
在 docker-compose.yml 中添加:
services:
app:
deploy:
resources:
limits:
cpus: '2'
memory: 4G
reservations:
cpus: '1'
memory: 2G
使用生产级数据库:
减少构建时间:
.dockerignore 排除不必要的文件加快热重载:
watchfiles 替代默认的文件监控扫描镜像漏洞:
docker scan rag-system:prod