|
|
|
FROM ubuntu:24.04 AS base |
|
USER root |
|
|
|
WORKDIR /ragflow |
|
|
|
RUN rm -f /etc/apt/apt.conf.d/docker-clean \ |
|
&& echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache |
|
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ |
|
apt update && apt-get --no-install-recommends install -y ca-certificates |
|
|
|
|
|
RUN sed -i 's|http://archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list.d/ubuntu.sources |
|
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ |
|
apt update && apt install -y curl libpython3-dev nginx openmpi-bin openmpi-common libopenmpi-dev libglib2.0-0 libglx-mesa0 \ |
|
&& rm -rf /var/lib/apt/lists/* \ |
|
&& curl -sSL https://install.python-poetry.org | python3 - |
|
|
|
ENV PYTHONDONTWRITEBYTECODE=1 LD_LIBRARY_PATH=usr/lib/x86_64-linux-gnu/openmpi/lib:$LD_LIBRARY_PATH |
|
|
|
|
|
ENV POETRY_NO_INTERACTION=1 |
|
ENV POETRY_VIRTUALENVS_IN_PROJECT=true |
|
ENV POETRY_VIRTUALENVS_CREATE=true |
|
ENV POETRY_REQUESTS_TIMEOUT=15 |
|
|
|
|
|
FROM base AS builder |
|
USER root |
|
|
|
WORKDIR /ragflow |
|
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ |
|
apt update && apt install -y nodejs npm && \ |
|
rm -rf /var/lib/apt/lists/* |
|
|
|
|
|
RUN npm config set registry https://registry.npmmirror.com/ |
|
|
|
|
|
COPY web web |
|
RUN cd web && npm install -g corepack && corepack enable && yarn install && yarn run build |
|
|
|
|
|
COPY pyproject.toml poetry.toml poetry.lock ./ |
|
RUN --mount=type=cache,target=/root/.cache/pypoetry,sharing=locked \ |
|
/root/.local/bin/poetry install --sync --no-cache --no-root |
|
|
|
|
|
FROM base AS production |
|
USER root |
|
|
|
WORKDIR /ragflow |
|
|
|
|
|
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ |
|
apt update && apt install -y --no-install-recommends nginx libgl1 vim less && \ |
|
rm -rf /var/lib/apt/lists/* |
|
|
|
COPY web web |
|
COPY api api |
|
COPY conf conf |
|
COPY deepdoc deepdoc |
|
COPY rag rag |
|
COPY agent agent |
|
COPY graphrag graphrag |
|
COPY pyproject.toml poetry.toml poetry.lock ./ |
|
|
|
|
|
COPY --from=builder /ragflow/web/dist /ragflow/web/dist |
|
|
|
|
|
ENV VIRTUAL_ENV=/ragflow/.venv |
|
COPY --from=builder ${VIRTUAL_ENV} ${VIRTUAL_ENV} |
|
ENV PATH="${VIRTUAL_ENV}/bin:/root/.local/bin:${PATH}" |
|
|
|
|
|
RUN python3 -m nltk.downloader wordnet punkt punkt_tab |
|
|
|
|
|
COPY det.onnx layout.laws.onnx layout.manual.onnx layout.onnx layout.paper.onnx ocr.res rec.onnx tsr.onnx updown_concat_xgb.model /ragflow/rag/res/deepdoc/ |
|
|
|
ENV PYTHONPATH=/ragflow/ |
|
|
|
COPY docker/entrypoint.sh ./entrypoint.sh |
|
RUN chmod +x ./entrypoint.sh |
|
|
|
ENTRYPOINT ["./entrypoint.sh"] |
|
|