From 9db44da99258ee1706ff5c1b5f97e1739d6e308e Mon Sep 17 00:00:00 2001 From: Edward-Elric233 <45136205+Edward-Elric233@users.noreply.github.com> Date: Thu, 25 Apr 2024 08:46:53 +0800 Subject: [PATCH] Add docker support for OpenCloudOS 9 (#526) ### What problem does this PR solve? This PR aims to add support for running Ragflow on Docker with the OpenCloudOS 9 distribution. ### Type of change - [x] New Feature (non-breaking change which adds functionality) Co-authored-by: edwardewang --- Dockerfile.scratch.oc9 | 56 ++++++++++++++++++++++++++++++++ docker/docker-compose-CN-oc9.yml | 29 +++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 Dockerfile.scratch.oc9 create mode 100644 docker/docker-compose-CN-oc9.yml diff --git a/Dockerfile.scratch.oc9 b/Dockerfile.scratch.oc9 new file mode 100644 index 0000000000..ffb2272bdd --- /dev/null +++ b/Dockerfile.scratch.oc9 @@ -0,0 +1,56 @@ +FROM opencloudos/opencloudos:9.0 +USER root + +WORKDIR /ragflow + +RUN dnf update -y && dnf install -y wget curl gcc-c++ openmpi-devel + +RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh && \ + bash ~/miniconda.sh -b -p /root/miniconda3 && \ + rm ~/miniconda.sh && ln -s /root/miniconda3/etc/profile.d/conda.sh /etc/profile.d/conda.sh && \ + echo ". /root/miniconda3/etc/profile.d/conda.sh" >> ~/.bashrc && \ + echo "conda activate base" >> ~/.bashrc + +ENV PATH /root/miniconda3/bin:$PATH + +RUN conda create -y --name py11 python=3.11 + +ENV CONDA_DEFAULT_ENV py11 +ENV CONDA_PREFIX /root/miniconda3/envs/py11 +ENV PATH $CONDA_PREFIX/bin:$PATH + +# RUN curl -sL https://rpm.nodesource.com/setup_14.x | bash - +RUN dnf install -y nodejs + +RUN dnf install -y nginx + +ADD ./web ./web +ADD ./api ./api +ADD ./conf ./conf +ADD ./deepdoc ./deepdoc +ADD ./rag ./rag +ADD ./requirements.txt ./requirements.txt + +RUN dnf install -y openmpi openmpi-devel python3-openmpi +ENV C_INCLUDE_PATH /usr/include/openmpi-x86_64:$C_INCLUDE_PATH +ENV LD_LIBRARY_PATH /usr/lib64/openmpi/lib:$LD_LIBRARY_PATH +RUN rm /root/miniconda3/envs/py11/compiler_compat/ld +RUN cd ./web && npm i && npm run build +RUN conda run -n py11 pip install $(grep -ivE "mpi4py" ./requirements.txt) # without mpi4py==3.1.5 +RUN conda run -n py11 pip install redis + +RUN dnf update -y && \ + dnf install -y glib2 mesa-libGL && \ + dnf clean all + +RUN conda run -n py11 pip install ollama +RUN conda run -n py11 python -m nltk.downloader punkt +RUN conda run -n py11 python -m nltk.downloader wordnet + +ENV PYTHONPATH=/ragflow/ +ENV HF_ENDPOINT=https://hf-mirror.com + +ADD docker/entrypoint.sh ./entrypoint.sh +RUN chmod +x ./entrypoint.sh + +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/docker-compose-CN-oc9.yml b/docker/docker-compose-CN-oc9.yml new file mode 100644 index 0000000000..5e89fc2bd6 --- /dev/null +++ b/docker/docker-compose-CN-oc9.yml @@ -0,0 +1,29 @@ +include: + - path: ./docker-compose-base.yml + env_file: ./.env + +services: + ragflow: + depends_on: + mysql: + condition: service_healthy + es01: + condition: service_healthy + image: edwardelric233/ragflow:oc9 + container_name: ragflow-server + ports: + - ${SVR_HTTP_PORT}:9380 + - 80:80 + - 443:443 + volumes: + - ./service_conf.yaml:/ragflow/conf/service_conf.yaml + - ./ragflow-logs:/ragflow/logs + - ./nginx/ragflow.conf:/etc/nginx/conf.d/ragflow.conf + - ./nginx/proxy.conf:/etc/nginx/proxy.conf + - ./nginx/nginx.conf:/etc/nginx/nginx.conf + environment: + - TZ=${TIMEZONE} + - HF_ENDPOINT=https://hf-mirror.com + networks: + - ragflow + restart: always