FROM node:24-bookworm-slim AS ui
WORKDIR /frontend
COPY frontend/package.json frontend/package-lock.json ./
RUN npm ci
COPY frontend/ ./
RUN npm run build
FROM python:3.12-slim
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends build-essential && rm -rf /var/lib/apt/lists/*
RUN pip install --no-cache-dir uv==0.11.19
COPY pyproject.toml uv.lock ./
RUN uv sync --frozen --no-dev
COPY service/ ./service/
COPY rules.yaml README.zh-CN.md MATCHING_RULES.zh-CN.md ./
COPY --from=ui /frontend/dist ./frontend/dist
RUN useradd -u 10001 -m appuser && mkdir /app/data && chown appuser:appuser /app/data
USER appuser
ENV APK_DATA_DIR=/app/data
EXPOSE 8765
CMD ["/app/.venv/bin/uvicorn", "service.app:app", "--host", "0.0.0.0", "--port", "8765", "--no-access-log"]
