feat: consolidate backend and docker-compose setup
This commit is contained in:
commit
ff3753a745
306 files changed
+35450
No files matched your search
@@ -0,0 +1,82 @@
|
||||
# Stage 0: GPU Base image
|
||||
FROM nvidia/cuda:12.6.0-devel-ubuntu22.04 AS base-gpu
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV PATH="/root/.local/bin:$PATH"
|
||||
|
||||
# Install system dependencies (libgl and libglib are required for OpenCV)
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
curl \
|
||||
git \
|
||||
libgl1 \
|
||||
libglib2.0-0 \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install uv
|
||||
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
|
||||
# --- vLLM Server Stage ---
|
||||
FROM base-gpu AS vllm-server
|
||||
WORKDIR /app
|
||||
|
||||
# Install project dependencies
|
||||
COPY pyproject.toml uv.lock ./
|
||||
RUN uv python pin 3.12 && uv sync --frozen --no-dev
|
||||
|
||||
# Install prebuilt flash-attention wheel
|
||||
ARG FLASH_ATTN_WHEEL=https://github.com/mjun0812/flash-attention-prebuild-wheels/releases/download/v0.3.14/flash_attn-2.8.2+cu128torch2.8-cp312-cp312-linux_x86_64.whl
|
||||
RUN uv pip install --python .venv "${FLASH_ATTN_WHEEL}"
|
||||
|
||||
COPY . /app
|
||||
RUN chmod +x /app/scripts/serve.sh
|
||||
|
||||
EXPOSE 8118
|
||||
CMD ["./scripts/serve.sh"]
|
||||
|
||||
# --- Pipeline API Stage ---
|
||||
FROM base-gpu AS pipeline-api
|
||||
WORKDIR /app
|
||||
|
||||
# Build paddlepaddle and paddlex virtual env
|
||||
RUN uv venv .venv-api --python 3.12
|
||||
RUN uv pip install --python .venv-api paddlepaddle-gpu -i https://www.paddlepaddle.org.cn/packages/stable/cu126/
|
||||
RUN uv pip install --python .venv-api "paddleocr[doc-parser]>=3.3.0"
|
||||
RUN uv pip install --python .venv-api "aiohttp>=3.9" "filetype>=1.2" "fastapi>=0.110" "starlette>=0.36" "uvicorn>=0.16" "ultralytics>=8.0"
|
||||
|
||||
COPY . /app
|
||||
RUN chmod +x /app/scripts/serve-pipeline.sh
|
||||
|
||||
EXPOSE 8090
|
||||
CMD ["./scripts/serve-pipeline.sh"]
|
||||
|
||||
# --- Gradio UI Stage ---
|
||||
FROM python:3.12-slim AS gradio-ui
|
||||
WORKDIR /app/PaddleOCR-VL-1.6_Online_Demo
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
curl \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY PaddleOCR-VL-1.6_Online_Demo/requirements.txt ./
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY PaddleOCR-VL-1.6_Online_Demo ./
|
||||
|
||||
EXPOSE 7870
|
||||
|
||||
ENV GRADIO_SERVER_NAME="0.0.0.0"
|
||||
ENV GRADIO_SERVER_PORT="7870"
|
||||
|
||||
CMD ["python", "app.py"]
|
||||
|
||||
# --- Next.js Web App Stage ---
|
||||
FROM node:20-slim AS pfm-web-app
|
||||
WORKDIR /app
|
||||
COPY pfm-web-app/package.json pfm-web-app/package-lock.json ./
|
||||
RUN npm ci
|
||||
COPY pfm-web-app/ ./
|
||||
ENV NODE_ENV=production
|
||||
RUN npm run build
|
||||
EXPOSE 3000
|
||||
CMD ["npm", "start"]
|
||||
|
||||
Reference in new issue
Block a user