jingjiang233/Scientific-Computing-and-Machine-Learning
0
1FROM nvidia/cuda:12.5.1-cudnn-devel-ubuntu20.042 3ENV DEBIAN_FRONTEND=noninteractive \4 TZ=Europe/Paris \5 CONDA_AUTO_UPDATE_CONDA=false \6 HOME=/home/user \7 PATH=/home/user/miniconda/bin:$PATH \8 PYTHONUNBUFFERED=1 \9 GRADIO_ALLOW_FLAGGING=never \10 GRADIO_NUM_PORTS=1 \11 GRADIO_SERVER_NAME=0.0.0.0 \12 GRADIO_THEME=huggingface \13 SYSTEM=spaces \14 SHELL=/bin/bash15 16# Base utilities17RUN rm -f /etc/apt/sources.list.d/*.list && \18 apt-get update && apt-get install -y --no-install-recommends \19 curl \20 ca-certificates \21 sudo \22 git \23 wget \24 procps \25 git-lfs \26 zip \27 unzip \28 htop \29 vim \30 nano \31 bzip2 \32 libx11-6 \33 build-essential \34 libsndfile-dev \35 software-properties-common \36 && rm -rf /var/lib/apt/lists/*37 38# nvtop39RUN add-apt-repository ppa:flexiondotorg/nvtop && \40 apt-get update && \41 apt-get install -y --no-install-recommends nvtop && \42 rm -rf /var/lib/apt/lists/*43 44# Node.js 2145RUN curl -fsSL https://deb.nodesource.com/setup_21.x | bash - && \46 apt-get update && \47 apt-get install -y nodejs && \48 npm install -g configurable-http-proxy && \49 rm -rf /var/lib/apt/lists/*50 51# Working directory52WORKDIR /app53 54# User setup55RUN adduser --disabled-password --gecos '' --shell /bin/bash user && \56 mkdir -p /home/user/.cache /home/user/.config /home/user/app && \57 chown -R user:user /home/user /app && \58 echo "user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/90-user59 60# Miniconda Python 3.1061USER user62RUN curl -fsSL -o /home/user/miniconda.sh https://repo.anaconda.com/miniconda/Miniconda3-py310_22.11.1-1-Linux-x86_64.sh && \63 bash /home/user/miniconda.sh -b -p /home/user/miniconda && \64 rm -f /home/user/miniconda.sh && \65 conda clean -ya66 67WORKDIR /home/user/app68 69# Back to root for system packages / startup70USER root71 72RUN --mount=target=/root/packages.txt,source=packages.txt \73 apt-get update && \74 xargs -r -a /root/packages.txt apt-get install -y --no-install-recommends && \75 rm -rf /var/lib/apt/lists/*76 77RUN --mount=target=/root/on_startup.sh,source=on_startup.sh,readwrite \78 bash /root/on_startup.sh79 80RUN mkdir -p /data && chown user:user /data81 82# Python packages83USER user84RUN --mount=target=requirements.txt,source=requirements.txt \85 pip install --no-cache-dir --upgrade -r requirements.txt86 87# App files88COPY --chown=user:user . /home/user/app89 90RUN chmod +x /home/user/app/start_server.sh91 92# Jupyter template path for Python 3.1093COPY --chown=user:user login.html /home/user/miniconda/lib/python3.10/site-packages/jupyter_server/templates/login.html94 95CMD ["./start_server.sh"]96 