-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathDockerfile.api
More file actions
25 lines (20 loc) · 1.2 KB
/
Copy pathDockerfile.api
File metadata and controls
25 lines (20 loc) · 1.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim
# 生产镜像仅安装锁文件中的运行依赖,Alembic 在 API 启动前显式升级 Schema。
WORKDIR /app
ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy PATH="/app/.venv/bin:$PATH"
# Docling 的 OpenCV 运行时需要基础图形/线程动态库;它们只用于后台 PDF 推理,不启动 GUI。
RUN apt-get update \
&& apt-get install -y --no-install-recommends libgl1 libglib2.0-0 \
&& rm -rf /var/lib/apt/lists/*
COPY pyproject.toml uv.lock README.md ./
# 依赖层不安装本项目本身,因此普通源码修改可以复用包含 Docling/Torch 的大体积缓存层。
RUN --mount=type=cache,target=/root/.cache/uv uv sync --frozen --no-dev --no-install-project
COPY src ./src
COPY apps/api ./apps/api
COPY alembic ./alembic
COPY alembic.ini ./
# 第二次同步只构建当前项目;锁文件依赖已在上一层安装,源码迭代无需重复编译整个 venv。
RUN --mount=type=cache,target=/root/.cache/uv uv sync --frozen --no-dev
EXPOSE 8000
# 核心库 ultimate_rag 来自 venv,API 应用包通过 --app-dir 加入导入路径。
CMD ["sh", "-c", "alembic upgrade head && uvicorn --app-dir apps api.app:app --host 0.0.0.0 --port 8000"]