92b062c048
- 新增 app/api/deps.py、app/core/users.py、app/core/sessions.py:会话鉴权依赖、 用户存储(PBKDF2-HMAC-SHA256 + 随机 salt,Redis/内存降级)、会话签发与校验(TTL 12h) - auth.py 新增用户管理端点(列表/创建/重置密码/删除)与 admin/user 角色权限边界, user 访问用户管理返回 1006,禁删自己与最后一个 admin - admin.html 新增用户管理面板(仅 admin 挂载)与 API 指南在线测试台 - Dockerfile 将 uv 放入 PATH;docker-compose 调整 qdrant 依赖为 service_started 并移除依赖 curl 的 healthcheck(官方镜像不含 curl) - 新增用户管理测试(users/sessions/auth_api/auth_integration),全量 461 项测试通过 Co-Authored-By: WorkBuddy <workbuddy@tencent.com>
92 lines
2.6 KiB
YAML
92 lines
2.6 KiB
YAML
services:
|
||
app:
|
||
build: .
|
||
container_name: qmdsearch-app
|
||
restart: unless-stopped
|
||
ports:
|
||
- "${APP_PORT:-8000}:8000"
|
||
environment:
|
||
- QDRANT_HOST=qdrant
|
||
- QDRANT_PORT=6333
|
||
- REDIS_URL=redis://redis:6379/0
|
||
- OLLAMA_BASE_URL=http://ollama:11434
|
||
# 针对 16 线程 / 61GB 内存的 NAS 调优:放宽入库并发
|
||
- INGEST_MAX_CONCURRENCY=${INGEST_MAX_CONCURRENCY:-4}
|
||
env_file:
|
||
- .env
|
||
depends_on:
|
||
qdrant:
|
||
condition: service_started
|
||
redis:
|
||
condition: service_healthy
|
||
ollama:
|
||
condition: service_started
|
||
volumes:
|
||
- ${NAS_DATA_DIR:-./data}/logs:/app/logs
|
||
- ${NAS_DATA_DIR:-./data}/uploads:/app/uploads
|
||
networks:
|
||
- qmdsearch
|
||
|
||
qdrant:
|
||
image: qdrant/qdrant:latest
|
||
container_name: qmdsearch-qdrant
|
||
restart: unless-stopped
|
||
ports:
|
||
- "${QDRANT_PORT:-6333}:6333"
|
||
- "${QDRANT_DASHBOARD_PORT:-6334}:6334"
|
||
volumes:
|
||
- ${NAS_DATA_DIR:-./data}/qdrant:/qdrant/storage
|
||
# 官方 qdrant 镜像不含 curl/wget,内部 healthcheck 无法执行 HTTP 探测;
|
||
# 改用 service_started 依赖(qdrant 启动即就绪),由 app 的 restart 策略兜底。
|
||
networks:
|
||
- qmdsearch
|
||
|
||
redis:
|
||
image: redis:7-alpine
|
||
container_name: qmdsearch-redis
|
||
restart: unless-stopped
|
||
# 仅内部网络访问,不对外暴露主机端口(避免与 NAS 已有 redis 的 6379 冲突)
|
||
volumes:
|
||
- ${NAS_DATA_DIR:-./data}/redis:/data
|
||
healthcheck:
|
||
test: ["CMD", "redis-cli", "ping"]
|
||
interval: 10s
|
||
timeout: 5s
|
||
retries: 5
|
||
networks:
|
||
- qmdsearch
|
||
|
||
ollama:
|
||
image: ollama/ollama:latest
|
||
container_name: qmdsearch-ollama
|
||
restart: unless-stopped
|
||
ports:
|
||
- "${OLLAMA_PORT:-11434}:11434"
|
||
volumes:
|
||
- ${NAS_DATA_DIR:-./data}/ollama:/root/.ollama
|
||
environment:
|
||
# 针对 Ryzen 9 7940HS(16 线程)的 CPU 推理调优:
|
||
# 并行推理任务数、常驻模型数、单请求线程上限、KV 缓存量化以省内存
|
||
- OLLAMA_NUM_PARALLEL=4
|
||
- OLLAMA_MAX_LOADED_MODELS=2
|
||
- OLLAMA_NUM_THREADS=16
|
||
- OLLAMA_KV_CACHE_TYPE=q8_0
|
||
# 首次启动自动拉取所需模型(qwen2.5:1.5b 总结 + bge-m3 嵌入),
|
||
# 下载完成后转交常驻 ollama serve。已存在时仅做健康检查。
|
||
entrypoint: /bin/bash
|
||
command:
|
||
- -c
|
||
- |
|
||
ollama serve &
|
||
SERVE_PID=$$!
|
||
sleep 6
|
||
ollama pull qwen2.5:1.5b
|
||
ollama pull bge-m3
|
||
wait $$SERVE_PID
|
||
networks:
|
||
- qmdsearch
|
||
|
||
networks:
|
||
qmdsearch:
|
||
driver: bridge
|