NetMonLLMmonitor / Dockerfile
johnbridges's picture
Update Dockerfile
c61c0e6 verified
Raw
History Blame Contribute Delete
4.13 kB
# syntax=docker/dockerfile:1.4
FROM debian:13
ENV DEBIAN_FRONTEND=noninteractive
# Install dependencies
RUN apt-get update && \
apt-get install -y \
build-essential \
curl \
ca-certificates \
git \
cmake \
clang \
pkg-config \
ccache \
wget \
vim \
libicu76 \
expect
# Create non-root user
RUN useradd -m user && \
mkdir -p /home/user/code && \
chown -R user:user /home/user
USER user
WORKDIR /home/user
# Create directories and download model
RUN mkdir -p /home/user/code/models && \
mkdir -p /home/user/code/app/wwwroot && \
wget -q \
https://huggingface.co/Mungert/gemma-4-E4B-it-GGUF/resolve/main/gemma-4-E4B-it-q4_k_m.gguf \
-O /home/user/code/models/gemma-4-E4B-it-q4_k_m.gguf
# Shallow clone and build OpenBLAS
RUN git clone --depth 1 \
https://github.com/OpenMathLib/OpenBLAS.git \
/home/user/code/models/OpenBLAS && \
make -C /home/user/code/models/OpenBLAS -j2 \
> /home/user/code/models/OpenBLAS/build.log 2>&1 || \
(tail -20 /home/user/code/models/OpenBLAS/build.log && false)
# Install OpenBLAS as root
USER root
RUN make -C /home/user/code/models/OpenBLAS install \
> /home/user/code/models/OpenBLAS/install.log 2>&1 || \
(tail -20 /home/user/code/models/OpenBLAS/install.log && false) && \
cp /opt/OpenBLAS/lib/libopenblas* /usr/local/lib/
USER user
# use --branch b8797 for qwen 3.5 compat may be fixed in future
RUN git clone --depth 1 \
https://github.com/ggerganov/llama.cpp.git \
/home/user/code/models/llama.cpp
# Install .NET 10
RUN wget https://dot.net/v1/dotnet-install.sh \
-O /home/user/dotnet-install.sh && \
chmod +x /home/user/dotnet-install.sh && \
/home/user/dotnet-install.sh --channel 10.0
# Persistent .NET environment
ENV DOTNET_ROOT=/home/user/.dotnet
ENV PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools
# Verify .NET installation
RUN whoami && dotnet --version
# Clone private repositories
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
#RUN git -C /home/user/code/models/llama.cpp apply \
# /home/user/code/NetworkMonitorLLM/patches/qwen35_imrope_context_shift_fix.diff
# Build llama.cpp with OpenBLAS
RUN export PKG_CONFIG_PATH=/opt/OpenBLAS/lib/pkgconfig:$PKG_CONFIG_PATH && \
cmake \
-S /home/user/code/models/llama.cpp \
-B /home/user/code/models/llama.cpp/build \
-DGGML_BLAS=ON \
-DGGML_BLAS_VENDOR=OpenBLAS \
-DBLAS_INCLUDE_DIRS=/home/user/code/models/OpenBLAS \
-DLLAMA_CURL=OFF && \
cmake --build /home/user/code/models/llama.cpp/build \
--config Release -j2 && \
cp /home/user/code/models/llama.cpp/build/bin/* \
/home/user/code/models/llama.cpp/
# Copy application files
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
# Working directory for model tasks
WORKDIR /home/user/code/models
# Hugging Face Spaces port
EXPOSE 7860
# Build .NET project
WORKDIR /home/user/code/NetworkMonitorLLM
RUN dotnet restore && \
dotnet build -c Release
# Copy runtime files and remove sources
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
# Final runtime directory
WORKDIR /home/user/code/app
CMD ["dotnet", "NetworkMonitorLLM.dll", "--urls", "http://0.0.0.0:7860"]