# 后端镜像：FastAPI + uv
FROM python:3.13-slim

# uv：从官方镜像拷贝二进制
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/

WORKDIR /app

ENV UV_COMPILE_BYTECODE=1 \
    UV_LINK_MODE=copy \
    PYTHONUNBUFFERED=1

# 先装依赖（利用缓存层）
COPY pyproject.toml uv.lock ./
RUN uv sync --frozen --no-install-project --no-dev

# 再拷贝应用代码
COPY app ./app
COPY alembic.ini ./
COPY entrypoint.sh ./
RUN uv sync --frozen --no-dev && chmod +x entrypoint.sh

EXPOSE 8000

# 启动前先跑迁移
ENTRYPOINT ["./entrypoint.sh"]
