# ── 阶段一：构建前端 ──
FROM node:20-alpine AS frontend-build

WORKDIR /app/frontend
COPY frontend/package.json frontend/package-lock.json* ./
RUN npm ci
COPY frontend/ ./
RUN npm run build-only


# ── 阶段二：运行后端 + 服务前端静态文件 ──
FROM python:3.12-slim

WORKDIR /app

# 安装 Python 依赖
COPY backend/requirements.txt ./requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# 复制后端代码
COPY backend/app ./app

# 复制前端构建产物到后端静态目录
COPY --from=frontend-build /app/frontend/dist ./static

# 数据目录（SQLite 存储）
RUN mkdir -p /app/data
VOLUME /app/data

ENV NOVAL_DATA_DIR=/app/data

EXPOSE 8000

CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
