Spaces:
Sleeping
Sleeping
| FROM nvidia/cuda:11.3.1-base-ubuntu20.04 | |
| ENV DEBIAN_FRONTEND=noninteractive \ | |
| TZ=Asia/Shanghai \ | |
| LANG=C.UTF-8 \ | |
| LC_ALL=C.UTF-8 \ | |
| PYTHONUNBUFFERED=1 | |
| # ===================================================== | |
| # Base system dependencies | |
| # ===================================================== | |
| RUN rm -f /etc/apt/sources.list.d/*.list && \ | |
| apt-get update && apt-get install -y \ | |
| curl \ | |
| ca-certificates \ | |
| sudo \ | |
| git \ | |
| git-lfs \ | |
| zip \ | |
| unzip \ | |
| wget \ | |
| nginx \ | |
| vim \ | |
| jq \ | |
| net-tools \ | |
| lsof \ | |
| telnet \ | |
| htop \ | |
| bzip2 \ | |
| build-essential \ | |
| software-properties-common \ | |
| python3 \ | |
| python3-pip \ | |
| libx11-6 \ | |
| libsndfile-dev \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # ===================================================== | |
| # OpenVSCode Server | |
| # ===================================================== | |
| ARG BUILD_DATE | |
| ARG VERSION | |
| ARG CODE_RELEASE | |
| RUN \ | |
| echo "**** install openvscode-server runtime dependencies ****" && \ | |
| apt-get update && \ | |
| apt-get install -y \ | |
| libatomic1 \ | |
| nano \ | |
| netcat && \ | |
| echo "**** install openvscode-server ****" && \ | |
| if [ -z ${CODE_RELEASE+x} ]; then \ | |
| CODE_RELEASE=$(curl -sX GET "https://api.github.com/repos/gitpod-io/openvscode-server/releases/latest" \ | |
| | awk '/tag_name/{print $4;exit}' FS='[""]' \ | |
| | sed 's|^openvscode-server-v||'); \ | |
| fi && \ | |
| mkdir -p /app/openvscode-server && \ | |
| curl -o /tmp/openvscode-server.tar.gz -L \ | |
| "https://github.com/gitpod-io/openvscode-server/releases/download/openvscode-server-v${CODE_RELEASE}/openvscode-server-v${CODE_RELEASE}-linux-x64.tar.gz" && \ | |
| tar xf /tmp/openvscode-server.tar.gz \ | |
| -C /app/openvscode-server/ \ | |
| --strip-components=1 && \ | |
| apt-get clean && \ | |
| rm -rf /tmp/* /var/lib/apt/lists/* /var/tmp/* | |
| # ===================================================== | |
| # Optional nvtop | |
| # ===================================================== | |
| RUN add-apt-repository ppa:flexiondotorg/nvtop && \ | |
| apt-get update && \ | |
| apt-get install -y --no-install-recommends nvtop | |
| # ===================================================== | |
| # Node.js + tools | |
| # ===================================================== | |
| RUN curl -sL https://deb.nodesource.com/setup_18.x | bash - && \ | |
| apt-get install -y nodejs && \ | |
| npm install -g \ | |
| configurable-http-proxy \ | |
| tsx \ | |
| tslab \ | |
| http-server \ | |
| miniflare@2 | |
| # ===================================================== | |
| # User setup | |
| # ===================================================== | |
| WORKDIR /app | |
| 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 | |
| ENV HOME=/home/user | |
| RUN mkdir -p $HOME/.cache $HOME/.config && \ | |
| chmod -R 777 $HOME | |
| # ===================================================== | |
| # Miniconda | |
| # ===================================================== | |
| ENV CONDA_AUTO_UPDATE_CONDA=false \ | |
| PATH=$HOME/miniconda/bin:$PATH \ | |
| PYTHONPATH=$HOME/app | |
| RUN curl -sLo ~/miniconda.sh \ | |
| https://repo.anaconda.com/miniconda/Miniconda3-py310_23.5.2-0-Linux-x86_64.sh && \ | |
| chmod +x ~/miniconda.sh && \ | |
| ~/miniconda.sh -b -p ~/miniconda && \ | |
| rm ~/miniconda.sh && \ | |
| conda clean -ya | |
| WORKDIR $HOME/app | |
| # ===================================================== | |
| # ROOT SECTION | |
| # ===================================================== | |
| USER root | |
| COPY packages.txt /root/packages.txt | |
| RUN apt-get update && \ | |
| xargs -r -a /root/packages.txt apt-get install -y --no-install-recommends && \ | |
| rm -rf /var/lib/apt/lists/* | |
| COPY on_startup.sh /root/on_startup.sh | |
| RUN bash /root/on_startup.sh || true | |
| # ===================================================== | |
| # USER SECTION | |
| # ===================================================== | |
| USER user | |
| # ===================================================== | |
| # Python dependencies | |
| # ===================================================== | |
| COPY requirements.txt $HOME/app/ | |
| RUN pip install --no-cache-dir --upgrade -r requirements.txt | |
| # ===================================================== | |
| # AI AGENT LAYER | |
| # ===================================================== | |
| COPY --chown=user app/agent $HOME/app/agent | |
| # ===================================================== | |
| # FULL APPLICATION SOURCE | |
| # ===================================================== | |
| COPY --chown=user . $HOME/app | |
| WORKDIR $HOME/app | |
| # ===================================================== | |
| # Playwright | |
| # ===================================================== | |
| RUN pip install playwright && \ | |
| playwright install --with-deps || true | |
| # ===================================================== | |
| # Permissions | |
| # ===================================================== | |
| RUN chmod +x start_server.sh || true | |
| # ===================================================== | |
| # Runtime ENV | |
| # ===================================================== | |
| ENV GRADIO_ALLOW_FLAGGING=never \ | |
| GRADIO_NUM_PORTS=1 \ | |
| GRADIO_SERVER_NAME=0.0.0.0 \ | |
| GRADIO_THEME=huggingface \ | |
| SYSTEM=spaces \ | |
| SHELL=/bin/bash | |
| EXPOSE 7860 3000 | |
| CMD ["bash", "./start_server.sh"] |