Fix Dockerfile for arm64 (#2705)
Browse files### What problem does this PR solve?
Fix Dockerfile for arm64
### Type of change
- [x] Bug Fix (non-breaking change which fixes an issue)
- [ ] New Feature (non-breaking change which adds functionality)
- [ ] Documentation Update
- [ ] Refactoring
- [ ] Performance Improvement
- [ ] Other (please describe):
---------
Co-authored-by: Ubuntu <[email protected]>
- .github/workflows/tests.yml +1 -1
- Dockerfile +12 -4
- Dockerfile.slim +12 -4
- docker/.env +1 -1
- download_deps.py +13 -1
    	
        .github/workflows/tests.yml
    CHANGED
    
    | @@ -48,7 +48,7 @@ jobs: | |
| 48 | 
             
                  - name: Build ragflow:dev-slim
         | 
| 49 | 
             
                    run: |
         | 
| 50 | 
             
                      RUNNER_WORKSPACE_PREFIX=${RUNNER_WORKSPACE_PREFIX:-$HOME}
         | 
| 51 | 
            -
                      cp -r ${RUNNER_WORKSPACE_PREFIX}/huggingface.co ${RUNNER_WORKSPACE_PREFIX}/nltk_data .
         | 
| 52 | 
             
                      sudo docker build -f Dockerfile.slim -t infiniflow/ragflow:dev-slim .
         | 
| 53 |  | 
| 54 | 
             
                  - name: Build ragflow:dev
         | 
|  | |
| 48 | 
             
                  - name: Build ragflow:dev-slim
         | 
| 49 | 
             
                    run: |
         | 
| 50 | 
             
                      RUNNER_WORKSPACE_PREFIX=${RUNNER_WORKSPACE_PREFIX:-$HOME}
         | 
| 51 | 
            +
                      cp -r ${RUNNER_WORKSPACE_PREFIX}/huggingface.co ${RUNNER_WORKSPACE_PREFIX}/nltk_data ${RUNNER_WORKSPACE_PREFIX}/*.tar.gz .
         | 
| 52 | 
             
                      sudo docker build -f Dockerfile.slim -t infiniflow/ragflow:dev-slim .
         | 
| 53 |  | 
| 54 | 
             
                  - name: Build ragflow:dev
         | 
    	
        Dockerfile
    CHANGED
    
    | @@ -12,14 +12,22 @@ RUN rm -f /etc/apt/apt.conf.d/docker-clean \ | |
| 12 | 
             
            RUN --mount=type=cache,id=ragflow_base_apt,target=/var/cache/apt,sharing=locked \
         | 
| 13 | 
             
                apt update && apt-get --no-install-recommends install -y ca-certificates
         | 
| 14 |  | 
| 15 | 
            -
            #  | 
| 16 | 
            -
            RUN | 
|  | |
| 17 |  | 
| 18 | 
             
            RUN --mount=type=cache,id=ragflow_base_apt,target=/var/cache/apt,sharing=locked \
         | 
| 19 | 
            -
                apt update && apt install -y curl libpython3-dev nginx libglib2.0-0 libglx-mesa0 pkg-config libicu-dev libgdiplus python3-poetry \
         | 
|  | |
| 20 | 
             
                && rm -rf /var/lib/apt/lists/*
         | 
| 21 |  | 
| 22 | 
            -
            RUN  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 23 |  | 
| 24 | 
             
            ENV PYTHONDONTWRITEBYTECODE=1 DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
         | 
| 25 |  | 
|  | |
| 12 | 
             
            RUN --mount=type=cache,id=ragflow_base_apt,target=/var/cache/apt,sharing=locked \
         | 
| 13 | 
             
                apt update && apt-get --no-install-recommends install -y ca-certificates
         | 
| 14 |  | 
| 15 | 
            +
            # If you are at mainland China, you can use tsinghua mirror to speed up apt and poetry
         | 
| 16 | 
            +
            RUN sed -i 's|http://archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list.d/ubuntu.sources
         | 
| 17 | 
            +
            ENV POETRY_PYPI_MIRROR_URL=https://pypi.tuna.tsinghua.edu.cn/simple/
         | 
| 18 |  | 
| 19 | 
             
            RUN --mount=type=cache,id=ragflow_base_apt,target=/var/cache/apt,sharing=locked \
         | 
| 20 | 
            +
                apt update && apt install -y curl libpython3-dev nginx libglib2.0-0 libglx-mesa0 pkg-config libicu-dev libgdiplus python3-pip python3-poetry \
         | 
| 21 | 
            +
                && pip3 install --user --break-system-packages poetry-plugin-pypi-mirror --index-url https://pypi.tuna.tsinghua.edu.cn/simple/ \
         | 
| 22 | 
             
                && rm -rf /var/lib/apt/lists/*
         | 
| 23 |  | 
| 24 | 
            +
            RUN --mount=type=bind,source=openssl-1.1.1w.tar.gz,target=/root/openssl-1.1.1w.tar.gz  \
         | 
| 25 | 
            +
                echo '/usr/local/lib' >> /etc/ld.so.conf.d/local.conf \
         | 
| 26 | 
            +
                && echo '/usr/local/lib64' >> /etc/ld.so.conf.d/local.conf \
         | 
| 27 | 
            +
                && cd /root && tar xzf openssl-1.1.1w.tar.gz \
         | 
| 28 | 
            +
                && cd openssl-1.1.1w && ./config --prefix=/usr/local/openssl11 --openssldir=/usr/local/openssl11 shared \
         | 
| 29 | 
            +
                && make -j && make install \
         | 
| 30 | 
            +
                && ldconfig && cd /root && rm -rf openssl-1.1.1w
         | 
| 31 |  | 
| 32 | 
             
            ENV PYTHONDONTWRITEBYTECODE=1 DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
         | 
| 33 |  | 
    	
        Dockerfile.slim
    CHANGED
    
    | @@ -12,14 +12,22 @@ RUN rm -f /etc/apt/apt.conf.d/docker-clean \ | |
| 12 | 
             
            RUN --mount=type=cache,id=ragflow_base_apt,target=/var/cache/apt,sharing=locked \
         | 
| 13 | 
             
                apt update && apt-get --no-install-recommends install -y ca-certificates
         | 
| 14 |  | 
| 15 | 
            -
            #  | 
| 16 | 
            -
            RUN | 
|  | |
| 17 |  | 
| 18 | 
             
            RUN --mount=type=cache,id=ragflow_base_apt,target=/var/cache/apt,sharing=locked \
         | 
| 19 | 
            -
                apt update && apt install -y curl libpython3-dev nginx libglib2.0-0 libglx-mesa0 pkg-config libicu-dev libgdiplus python3-poetry \
         | 
|  | |
| 20 | 
             
                && rm -rf /var/lib/apt/lists/*
         | 
| 21 |  | 
| 22 | 
            -
            RUN  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 23 |  | 
| 24 | 
             
            ENV PYTHONDONTWRITEBYTECODE=1 DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
         | 
| 25 |  | 
|  | |
| 12 | 
             
            RUN --mount=type=cache,id=ragflow_base_apt,target=/var/cache/apt,sharing=locked \
         | 
| 13 | 
             
                apt update && apt-get --no-install-recommends install -y ca-certificates
         | 
| 14 |  | 
| 15 | 
            +
            # If you are at mainland China, you can use tsinghua mirror to speed up apt and poetry
         | 
| 16 | 
            +
            RUN sed -i 's|http://archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list.d/ubuntu.sources
         | 
| 17 | 
            +
            ENV POETRY_PYPI_MIRROR_URL=https://pypi.tuna.tsinghua.edu.cn/simple/
         | 
| 18 |  | 
| 19 | 
             
            RUN --mount=type=cache,id=ragflow_base_apt,target=/var/cache/apt,sharing=locked \
         | 
| 20 | 
            +
                apt update && apt install -y curl libpython3-dev nginx libglib2.0-0 libglx-mesa0 pkg-config libicu-dev libgdiplus python3-pip python3-poetry \
         | 
| 21 | 
            +
                && pip3 install --user --break-system-packages poetry-plugin-pypi-mirror \
         | 
| 22 | 
             
                && rm -rf /var/lib/apt/lists/*
         | 
| 23 |  | 
| 24 | 
            +
            RUN --mount=type=bind,source=openssl-1.1.1w.tar.gz,target=/root/openssl-1.1.1w.tar.gz  \
         | 
| 25 | 
            +
                echo '/usr/local/lib' >> /etc/ld.so.conf.d/local.conf \
         | 
| 26 | 
            +
                && echo '/usr/local/lib64' >> /etc/ld.so.conf.d/local.conf \
         | 
| 27 | 
            +
                && cd /root && tar xzf openssl-1.1.1w.tar.gz \
         | 
| 28 | 
            +
                && cd openssl-1.1.1w && ./config --prefix=/usr/local/openssl11 --openssldir=/usr/local/openssl11 shared \
         | 
| 29 | 
            +
                && make -j && make install \
         | 
| 30 | 
            +
                && ldconfig && cd /root && rm -rf openssl-1.1.1w
         | 
| 31 |  | 
| 32 | 
             
            ENV PYTHONDONTWRITEBYTECODE=1 DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
         | 
| 33 |  | 
    	
        docker/.env
    CHANGED
    
    | @@ -33,7 +33,7 @@ REDIS_PASSWORD=infini_rag_flow | |
| 33 |  | 
| 34 | 
             
            SVR_HTTP_PORT=9380
         | 
| 35 |  | 
| 36 | 
            -
            RAGFLOW_IMAGE=infiniflow/ragflow:dev | 
| 37 |  | 
| 38 | 
             
            # If inside mainland China, decomment either of the following hub.docker.com mirrors:
         | 
| 39 | 
             
            # RAGFLOW_IMAGE=swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:dev-slim
         | 
|  | |
| 33 |  | 
| 34 | 
             
            SVR_HTTP_PORT=9380
         | 
| 35 |  | 
| 36 | 
            +
            RAGFLOW_IMAGE=infiniflow/ragflow:dev
         | 
| 37 |  | 
| 38 | 
             
            # If inside mainland China, decomment either of the following hub.docker.com mirrors:
         | 
| 39 | 
             
            # RAGFLOW_IMAGE=swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:dev-slim
         | 
    	
        download_deps.py
    CHANGED
    
    | @@ -3,6 +3,11 @@ | |
| 3 | 
             
            from huggingface_hub import snapshot_download
         | 
| 4 | 
             
            import nltk
         | 
| 5 | 
             
            import os
         | 
|  | |
|  | |
|  | |
|  | |
|  | |
| 6 |  | 
| 7 | 
             
            repos = [
         | 
| 8 | 
             
                "InfiniFlow/text_concat_xgb_v1.0",
         | 
| @@ -20,10 +25,17 @@ def download_model(repo_id): | |
| 20 |  | 
| 21 |  | 
| 22 | 
             
            if __name__ == "__main__":
         | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 23 | 
             
                local_dir = os.path.abspath('nltk_data')
         | 
| 24 | 
            -
                for data in ['wordnet', 'punkt', ' | 
| 25 | 
             
                    print(f"Downloading nltk {data}...")
         | 
| 26 | 
             
                    nltk.download(data, download_dir=local_dir)
         | 
|  | |
| 27 | 
             
                for repo_id in repos:
         | 
| 28 | 
             
                    print(f"Downloading huggingface repo {repo_id}...")
         | 
| 29 | 
             
                    download_model(repo_id)
         | 
|  | |
| 3 | 
             
            from huggingface_hub import snapshot_download
         | 
| 4 | 
             
            import nltk
         | 
| 5 | 
             
            import os
         | 
| 6 | 
            +
            import urllib.request
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            urls = [
         | 
| 9 | 
            +
                "https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz",
         | 
| 10 | 
            +
            ]
         | 
| 11 |  | 
| 12 | 
             
            repos = [
         | 
| 13 | 
             
                "InfiniFlow/text_concat_xgb_v1.0",
         | 
|  | |
| 25 |  | 
| 26 |  | 
| 27 | 
             
            if __name__ == "__main__":
         | 
| 28 | 
            +
                for url in urls:
         | 
| 29 | 
            +
                    filename = url.split("/")[-1]
         | 
| 30 | 
            +
                    print(f"Downloading {url}...")
         | 
| 31 | 
            +
                    if not os.path.exists(filename):
         | 
| 32 | 
            +
                        urllib.request.urlretrieve(url, filename)
         | 
| 33 | 
            +
             | 
| 34 | 
             
                local_dir = os.path.abspath('nltk_data')
         | 
| 35 | 
            +
                for data in ['wordnet', 'punkt', 'punkt_tab']:
         | 
| 36 | 
             
                    print(f"Downloading nltk {data}...")
         | 
| 37 | 
             
                    nltk.download(data, download_dir=local_dir)
         | 
| 38 | 
            +
             | 
| 39 | 
             
                for repo_id in repos:
         | 
| 40 | 
             
                    print(f"Downloading huggingface repo {repo_id}...")
         | 
| 41 | 
             
                    download_model(repo_id)
         |