CoolFace
Apppublic

Blane187/vscode

sourceHugging Faceupdated 2y agoView on Hugging Face
2likes
Dockerfile135 linesDownload Raw Back to root
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