6f8c3a09af
GraphRAG CI/CD / build-and-deploy (push) Failing after 19m6s
UV_HTTP_TIMEOUT=300 防止大包(numpy/pandas/cryptography)下载超时
60 lines
1.7 KiB
Docker
60 lines
1.7 KiB
Docker
# ===== Stage 1: Build dependencies =====
|
|
FROM python:3.12-slim AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
# Install uv
|
|
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
|
|
|
|
# Copy dependency manifests
|
|
COPY backend/pyproject.toml .
|
|
COPY backend/.env.example .
|
|
|
|
# Create venv and install deps — increase timeout for slow networks
|
|
RUN UV_HTTP_TIMEOUT=300 uv venv /opt/venv && \
|
|
UV_HTTP_TIMEOUT=300 uv pip install --python /opt/venv/bin/python \
|
|
--index-url https://mirrors.aliyun.com/pypi/simple/ \
|
|
--extra-index-url https://pypi.org/simple/ \
|
|
"fastapi>=0.104.0" \
|
|
"uvicorn[standard]>=0.24.0" \
|
|
"python-multipart>=0.0.6" \
|
|
"langextract[all]>=0.1.0" \
|
|
"langchain>=0.2.0" \
|
|
"langchain-openai>=0.1.0" \
|
|
"langgraph>=0.1.0" \
|
|
"networkx>=3.0" \
|
|
"python-dotenv>=1.0.0" \
|
|
"requests>=2.31.0" \
|
|
"beautifulsoup4>=4.12.0" \
|
|
"python-jose[cryptography]>=3.3.0"
|
|
|
|
# ===== Stage 2: Runtime =====
|
|
FROM python:3.12-slim
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy venv from builder
|
|
COPY --from=builder /opt/venv /opt/venv
|
|
ENV PATH="/opt/venv/bin:$PATH"
|
|
|
|
# Copy backend source
|
|
COPY backend/ ./backend/
|
|
# Copy mineru_mvp (used by indexing pipeline)
|
|
COPY mineru_mvp/ ./mineru_mvp/
|
|
|
|
# Create data directories
|
|
RUN mkdir -p /app/backend/data/uploads \
|
|
/app/backend/data/jobs \
|
|
/app/backend/data/kg \
|
|
/app/backend/data/batches \
|
|
/app/mineru_mvp/output
|
|
|
|
# Update paths for container environment
|
|
ENV MINERU_PYTHON=/opt/venv/bin/python
|
|
ENV MINERU_PIPELINE=/app/mineru_mvp/pipeline.py
|
|
|
|
EXPOSE 8000
|
|
|
|
WORKDIR /app/backend
|
|
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
|