nobilake/vscode
0
1FROM nvidia/cuda:11.3.1-base-ubuntu20.042 3ENV DEBIAN_FRONTEND=noninteractive \4 TZ=Europe/Paris5 6# Remove any third-party apt sources to avoid issues with expiring keys.7# Install some basic utilities8RUN rm -f /etc/apt/sources.list.d/*.list && \9 apt-get update && apt-get install -y \10 curl \11 ca-certificates \12 sudo \13 git \14 git-lfs \15 zip \16 unzip \17 htop \18 bzip2 \19 libx11-6 \20 build-essential \21 libsndfile-dev \22 software-properties-common \23 && rm -rf /var/lib/apt/lists/*24 25ARG BUILD_DATE26ARG VERSION27ARG CODE_RELEASE28RUN \29 echo "**** install openvscode-server runtime dependencies ****" && \30 apt-get update && \31 apt-get install -y \32 jq \33 libatomic1 \34 nano \35 net-tools \36 netcat && \37 echo "**** install openvscode-server ****" && \38 if [ -z ${CODE_RELEASE+x} ]; then \39 CODE_RELEASE=$(curl -sX GET "https://api.github.com/repos/gitpod-io/openvscode-server/releases/latest" \40 | awk '/tag_name/{print $4;exit}' FS='[""]' \41 | sed 's|^openvscode-server-v||'); \42 fi && \43 mkdir -p /app/openvscode-server && \44 curl -o \45 /tmp/openvscode-server.tar.gz -L \46 "https://github.com/gitpod-io/openvscode-server/releases/download/openvscode-server-v${CODE_RELEASE}/openvscode-server-v${CODE_RELEASE}-linux-x64.tar.gz" && \47 tar xf \48 /tmp/openvscode-server.tar.gz -C \49 /app/openvscode-server/ --strip-components=1 && \50 echo "**** clean up ****" && \51 apt-get clean && \52 rm -rf \53 /tmp/* \54 /var/lib/apt/lists/* \55 /var/tmp/*56COPY root/ /57 58RUN add-apt-repository ppa:flexiondotorg/nvtop && \59 apt-get upgrade -y && \60 apt-get install -y --no-install-recommends nvtop61 62RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - && \63 apt-get install -y nodejs && \64 npm install -g configurable-http-proxy65 66# Create a working directory67WORKDIR /app68 69# Create a non-root user and switch to it70RUN adduser --disabled-password --gecos '' --shell /bin/bash user \71 && chown -R user:user /app72RUN echo "user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/90-user73USER user74 75# All users can use /home/user as their home directory76ENV HOME=/home/user77RUN mkdir $HOME/.cache $HOME/.config \78 && chmod -R 777 $HOME79 80# Set up the Conda environment81ENV CONDA_AUTO_UPDATE_CONDA=false \82 PATH=$HOME/miniconda/bin:$PATH83RUN curl -sLo ~/miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh \84 && chmod +x ~/miniconda.sh \85 && ~/miniconda.sh -b -p ~/miniconda \86 && rm ~/miniconda.sh \87 && conda clean -ya88 89WORKDIR $HOME/app90 91#######################################92# Start root user section93#######################################94 95USER root96 97# User Debian packages98## Security warning : Potential user code executed as root (build time)99RUN --mount=target=/root/packages.txt,source=packages.txt \100 apt-get update && \101 xargs -r -a /root/packages.txt apt-get install -y --no-install-recommends \102 && rm -rf /var/lib/apt/lists/*103 104RUN --mount=target=/root/on_startup.sh,source=on_startup.sh,readwrite \105 bash /root/on_startup.sh106 107RUN mkdir /data && chown user:user /data108 109#######################################110# End root user section111#######################################112 113USER user114 115# Python packages116RUN --mount=target=requirements.txt,source=requirements.txt \117 pip install --no-cache-dir --upgrade -r requirements.txt118 119# Copy the current directory contents into the container at $HOME/app setting the owner to the user120COPY --chown=user . $HOME/app121 122RUN chmod +x start_server.sh123 124ENV PYTHONUNBUFFERED=1 \125 GRADIO_ALLOW_FLAGGING=never \126 GRADIO_NUM_PORTS=1 \127 GRADIO_SERVER_NAME=0.0.0.0 \128 GRADIO_THEME=huggingface \129 SYSTEM=spaces \130 SHELL=/bin/bash131 132EXPOSE 7860 3000133 134CMD ["./start_server.sh"]135 