Spaces:
Running
Running
File size: 4,246 Bytes
66958f4 dcc98ca 9f5f808 d134bdd d069633 66958f4 d134bdd a3f2d83 d134bdd 0c65874 d134bdd c6f309a d134bdd c6f309a d134bdd e09f03f d134bdd 9f5f808 d134bdd 9f5f808 d134bdd 66958f4 d134bdd e09f03f 994c172 e41bedf e09f03f d134bdd 9eeb306 d134bdd 9f5f808 7df7d12 d134bdd 943fe4c 1dabb71 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | # syntax=docker/dockerfile:1.4
# Use the official Debian base image
FROM debian:13
# Set environment variables to avoid interactive prompts during package installation
ENV DEBIAN_FRONTEND=noninteractive
# Install system-level dependencies as root
RUN apt-get update && \
apt-get install -y \
build-essential \
curl \
ca-certificates \
git \
cmake \
clang \
pkg-config \
ccache \
wget \
vim \
libicu76 \
expect
# Create a non-root user and set up their environment
RUN useradd -m user && \
mkdir -p /home/user/code && \
chown -R user:user /home/user
# Switch to the non-root user
USER user
WORKDIR /home/user
RUN mkdir -p /home/user/code/models && \
mkdir -p /home/user/code/app/wwwroot && \
cd /home/user/code/models && \
wget -q https://huggingface.co/Mungert/Qwen3.5-2B-GGUF/resolve/main/Qwen3.5-2B-q6_k_m.gguf
# Clone and build OpenBLAS as the non-root user
RUN git clone https://github.com/OpenMathLib/OpenBLAS.git /home/user/code/models/OpenBLAS && \
cd /home/user/code/models/OpenBLAS && \
make -j2 > build.log 2>&1 || (tail -20 build.log && false)
# Switch to root for the OpenBLAS installation
USER root
RUN cd /home/user/code/models/OpenBLAS && \
make install > install.log 2>&1 || (tail -20 install.log && false) && \
cp /opt/OpenBLAS/lib/libopenblas* /usr/local/lib/
# Switch back to the non-root user
USER user
# Clone llama.cpp as the non-root user
RUN git clone https://github.com/ggerganov/llama.cpp /home/user/code/models/llama.cpp
# Install .NET 10.0 as the non-root user
RUN wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh && \
chmod +x dotnet-install.sh && \
./dotnet-install.sh --channel 10.0
# Set persistent environment variables
ENV DOTNET_ROOT=/home/user/.dotnet
ENV PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools
# Verify .NET installation and current user
RUN whoami && dotnet --version
# Clone repositories using the GITHUB_TOKEN secret
RUN --mount=type=secret,id=GITHUB_TOKEN,mode=0444,required=true \
git clone https://x-access-token:$(cat /run/secrets/GITHUB_TOKEN)@github.com/Mungert69/NetworkMonitorLib.git /home/user/code/NetworkMonitorLib && \
git clone https://x-access-token:$(cat /run/secrets/GITHUB_TOKEN)@github.com/Mungert69/NetworkMonitorLLM.git /home/user/code/NetworkMonitorLLM && \
git clone https://x-access-token:$(cat /run/secrets/GITHUB_TOKEN)@github.com/Mungert69/NetworkMonitorData.git /home/user/code/NetworkMonitorData
# Apply llama.cpp patches from NetworkMonitorLLM
RUN git -C /home/user/code/models/llama.cpp apply \
/home/user/code/NetworkMonitorLLM/patches/qwen35_imrope_context_shift_fix.diff
# /home/user/code/NetworkMonitorLLM/patches/qwen35_session_tokens_insert_fix.diff \
# /home/user/code/NetworkMonitorLLM/patches/qwen35_mrope_kv_restore_fix.diff
# Build llama.cpp with OpenBLAS support after patches
RUN cd /home/user/code/models/llama.cpp && \
export PKG_CONFIG_PATH=/opt/OpenBLAS/lib/pkgconfig:$PKG_CONFIG_PATH && \
cmake -B build -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS -DBLAS_INCLUDE_DIRS=/home/user/code/models/OpenBLAS -DLLAMA_CURL=OFF && \
cmake --build build --config Release -j2 && \
cp /home/user/code/models/llama.cpp/build/bin/* /home/user/code/models/llama.cpp/
# Copy files into the container as the non-root user
COPY --chown=user:user appsettings.json /home/user/code/app/appsettings.json
COPY --chown=user:user index.html /home/user/code/app/wwwroot/index.html
# Set the working directory for the build-qwen-3 script
WORKDIR /home/user/code/models
# Expose port 7860 for Hugging Face Spaces
EXPOSE 7860
# Set the working directory
WORKDIR /home/user/code/NetworkMonitorLLM
# Build the .NET project as the non-root user
RUN dotnet restore && \
dotnet build -c Release
RUN cp -r /home/user/code/NetworkMonitorLLM/bin/Release/net10.0/* /home/user/code/app/ && \
rm -rf /home/user/code/NetworkMonitorLib /home/user/code/NetworkMonitorLLM /home/user/code/NetworkMonitorData
# Set the working directory to the `app` directory
WORKDIR /home/user/code/app
CMD ["dotnet", "NetworkMonitorLLM.dll", "--urls", "http://0.0.0.0:7860"]
|