FROM nvidia/cuda:12.6.1-cudnn-devel-ubuntu24.04 ENV DEBIAN_FRONTEND=noninteractive \ TZ=Europe/Paris # Remove any third-party apt sources to avoid issues with expiring keys. # Install some basic utilities RUN rm -f /etc/apt/sources.list.d/*.list && \ apt-get update && apt-get install -y --no-install-recommends \ curl \ ca-certificates \ sudo \ git \ wget \ procps \ git-lfs \ zip \ unzip \ htop \ vim \ nano \ bzip2 \ libx11-6 \ build-essential \ libsndfile-dev \ software-properties-common \ && rm -rf /var/lib/apt/lists/* # Install advanced utilities and system libraries RUN apt-get update && apt-get install -y --no-install-recommends \ # Networking / diagnostics net-tools \ iputils-ping \ iproute2 \ dnsutils \ traceroute \ telnet \ nmap \ socat \ tcpdump \ lsof \ iftop \ iotop \ rsync \ screen \ tmux \ psmisc \ jq \ tree \ file \ strace \ ltrace \ gdb \ gdbserver \ ufw \ # Compression tools xz-utils \ p7zip-full \ p7zip-rar \ rar \ unrar \ # Python build requirements python3 \ python3-pip \ python3-venv \ python3-dev \ python3-setuptools \ python3-wheel \ # C/C++ common dependencies cmake \ ninja-build \ pkg-config \ autoconf \ automake \ libtool \ # Common libraries libssl-dev \ libffi-dev \ libprotobuf-dev \ protobuf-compiler \ libcurl4-openssl-dev \ zlib1g-dev \ libbz2-dev \ liblzma-dev \ libreadline-dev \ libncurses5-dev \ libncursesw5-dev \ libsqlite3-dev \ libxml2-dev \ libxslt1-dev \ libglib2.0-0 \ libsm6 \ libxext6 \ libxrender1 \ # Development utilities clang \ llvm \ pkg-config \ ffmpeg \ && rm -rf /var/lib/apt/lists/* # Install system dependencies RUN apt-get update && \ apt-get install -y \ build-essential \ libssl-dev \ zlib1g-dev \ libboost-math-dev \ libboost-python-dev \ libboost-timer-dev \ libboost-thread-dev \ libboost-system-dev \ libboost-filesystem-dev \ libopenblas-dev \ libomp-dev \ cmake \ pkg-config \ git \ python3-pip \ curl \ libcurl4-openssl-dev \ wget && \ rm -rf /var/lib/apt/lists/* RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && \ apt-get install -y nodejs && \ npm install -g configurable-http-proxy # Create a working directory WORKDIR /app # Create a non-root user and switch to it RUN adduser --disabled-password --gecos '' --shell /bin/bash user \ && chown -R user:user /app RUN echo "user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/90-user USER user # All users can use /home/user as their home directory ENV HOME=/home/user RUN mkdir $HOME/.cache $HOME/.config \ && chmod -R 777 $HOME # Set up the Conda environment (Updated to Python 3.13 installer) ENV CONDA_AUTO_UPDATE_CONDA=false \ PATH=$HOME/miniconda/bin:$PATH RUN curl -sLo ~/miniconda.sh https://repo.anaconda.com/miniconda/Miniconda3-py313_25.9.1-1-Linux-x86_64.sh \ && chmod +x ~/miniconda.sh \ && ~/miniconda.sh -b -p ~/miniconda \ && rm ~/miniconda.sh \ && conda clean -ya WORKDIR $HOME/app ####################################### # Start root user section ####################################### USER root # User Debian packages ## Security warning : Potential user code executed as root (build time) RUN --mount=target=/root/packages.txt,source=packages.txt \ apt-get update && \ xargs -r -a /root/packages.txt apt-get install -y --no-install-recommends \ && rm -rf /var/lib/apt/lists/* RUN --mount=target=/root/on_startup.sh,source=on_startup.sh,readwrite \ bash /root/on_startup.sh RUN mkdir /data && chown user:user /data ####################################### # End root user section ####################################### USER user # Python packages RUN --mount=target=requirements.txt,source=requirements.txt \ pip install --no-cache-dir --upgrade -r requirements.txt && \ pip install --no-cache-dir turbobpe # Copy the current directory contents into the container at $HOME/app setting the owner to the user COPY --chown=user . $HOME/app RUN chmod +x start_server.sh # Updated target path to use python3.13 instead of python3.9 COPY --chown=user login.html /home/user/miniconda/lib/python3.13/site-packages/jupyter_server/templates/login.html ENV PYTHONUNBUFFERED=1 \ GRADIO_ALLOW_FLAGGING=never \ GRADIO_NUM_PORTS=1 \ GRADIO_SERVER_NAME=0.0.0.0 \ GRADIO_THEME=huggingface \ SYSTEM=spaces \ SHELL=/bin/bash USER root CMD ["./start_server.sh"]