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>
39 lines
1023 B
Docker
39 lines
1023 B
Docker
# ---------- Stage 1: 前端构建 ----------
|
|
FROM node:20-slim AS frontend-builder
|
|
|
|
WORKDIR /frontend
|
|
|
|
# 依赖层(利用 Docker 层缓存)
|
|
COPY frontend/package.json frontend/package-lock.json ./
|
|
RUN npm ci
|
|
|
|
# 源码 + 构建
|
|
COPY frontend/ ./
|
|
RUN npm run build
|
|
|
|
# ---------- Stage 2: Python 后端 ----------
|
|
FROM python:3.12-slim AS base
|
|
|
|
WORKDIR /app
|
|
|
|
# 安装 uv(放到 PATH 中,供 uv sync 与 CMD 的 uv run 使用)
|
|
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
|
|
|
|
# 依赖层
|
|
COPY pyproject.toml uv.lock ./
|
|
RUN uv sync --frozen --no-dev
|
|
|
|
# 应用层
|
|
COPY app/ app/
|
|
COPY scripts/ scripts/
|
|
|
|
# 前端构建产物 → 后端静态目录(SPA 由 /admin 路由服务)
|
|
COPY --from=frontend-builder /frontend/dist /app/app/static/admin
|
|
|
|
EXPOSE 8000
|
|
|
|
HEALTHCHECK --interval=30s --timeout=5s --retries=3 \
|
|
CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:8000/api/v1/health')"
|
|
|
|
CMD ["uv", "run", "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
|