12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- FROM python:3.12-slim AS builder
- # 修改APT源为传入的镜像
- #RUN apt-get update && apt-get install -y gnupg2
- #RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3B4FE6ACC0B21F32 871920D1991BC93C
- # Install system dependencies
- RUN apt-get update && apt-get install -y --no-install-recommends \
- gcc g++ musl-dev curl libffi-dev gfortran libopenblas-dev \
- poppler-utils \
- && apt-get clean && rm -rf /var/lib/apt/lists/*
- RUN pip install --no-cache-dir poetry -i https://pypi.tuna.tsinghua.edu.cn/simple
- RUN poetry init
- # Add Rust to PATH
- ENV PATH="/root/.cargo/bin:${PATH}"
- RUN mkdir -p /app/py
- WORKDIR /app/py
- COPY pyproject.toml /app/py/pyproject.toml
- #RUN poetry config repositories.pypi https://mirrors.aliyun.com/pypi/simple/
- #RUN export POETRY_PYPI_REPOSITORIES="https://pypi.tuna.tsinghua.edu.cn/simple"
- # Install dependencies
- RUN poetry config virtualenvs.create false \
- && poetry install --extras "core ingestion-bundle" --only main --no-root \
- && pip install --no-cache-dir gunicorn uvicorn -i https://pypi.tuna.tsinghua.edu.cn/simple
- # Create the final image
- FROM python:3.12-slim
- # Install runtime dependencies
- RUN apt-get update \
- && apt-get install -y --no-install-recommends curl poppler-utils \
- && apt-get clean && rm -rf /var/lib/apt/lists/*
- # Add poppler to PATH
- ENV PATH="/usr/bin:${PATH}"
- # Debugging steps
- RUN echo "PATH: $PATH"
- RUN which pdfinfo
- RUN pdfinfo -v
- WORKDIR /app
- COPY --from=builder /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages
- COPY --from=builder /usr/local/bin /usr/local/bin
- # Expose the port and set environment variables
- ARG R2R_PORT=8000 R2R_HOST=0.0.0.0
- ENV R2R_PORT=$R2R_PORT R2R_HOST=$R2R_HOST
- EXPOSE $R2R_PORT
- COPY . /app
- # Copy the application and config
- COPY core /app/core
- COPY r2r /app/r2r
- COPY shared /app/shared
- COPY r2r.toml /app/r2r.toml
- COPY pyproject.toml /app/pyproject.toml
- # Run the application
- CMD ["sh", "-c", "uvicorn core.main.app_entry:app --host $R2R_HOST --port $R2R_PORT"]
|