Spaces:
Sleeping
Sleeping
| ############################################################ | |
| # Huggingβ―Face Space β AmazonΒ LinuxΒ 2023 + Python 3.12 + JupyterΒ Lab | |
| ############################################################ | |
| FROM amazonlinux:2023 | |
| # βββββββββββββββββββββββββββββ | |
| # 0οΈβ£ Environment variables | |
| # βββββββββββββββββββββββββββββ | |
| ENV TZ=Europe/Paris \ | |
| LANG=en_US.UTF-8 \ | |
| LC_ALL=en_US.UTF-8 \ | |
| PYTHONUNBUFFERED=1 | |
| # βββββββββββββββββββββββββββββ | |
| # 1οΈβ£ System packages + Python 3.12 | |
| # βββββββββββββββββββββββββββββ | |
| RUN yum -y update && \ | |
| yum -y install --allowerasing \ | |
| sudo \ | |
| curl-minimal \ | |
| wget \ | |
| git \ | |
| unzip \ | |
| zip \ | |
| which \ | |
| tar \ | |
| shadow-utils \ | |
| procps-ng \ | |
| nano \ | |
| vim \ | |
| bzip2 \ | |
| gcc \ | |
| gcc-c++ \ | |
| make \ | |
| glibc-langpack-en \ | |
| libX11 \ | |
| openssl \ | |
| ca-certificates \ | |
| libsndfile \ | |
| python3.12 \ | |
| python3.12-pip && \ | |
| yum clean all && \ | |
| alternatives --install /usr/bin/python python /usr/bin/python3.12 1 && \ | |
| alternatives --install /usr/bin/pip pip /usr/bin/pip3.12 1 | |
| # βββββββββββββββββββββββββββββ | |
| # 2οΈβ£ Node.js 21 + configurable-http-proxy | |
| # βββββββββββββββββββββββββββββ | |
| RUN curl -sL https://rpm.nodesource.com/setup_21.x | bash - && \ | |
| yum install -y nodejs && \ | |
| npm install -g configurable-http-proxy && \ | |
| yum clean all | |
| # βββββββββββββββββββββββββββββ | |
| # 3οΈβ£ Create nonβroot user | |
| # βββββββββββββββββββββββββββββ | |
| RUN useradd -m user && echo "user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/90-user | |
| ENV HOME=/home/user | |
| USER user | |
| # >>> ADD THIS LINE <<< | |
| ENV PATH="$HOME/.local/bin:$PATH" | |
| # βββββββββββββββββββββββββββββ | |
| # 4οΈβ£ Workspace & working directory | |
| # βββββββββββββββββββββββββββββ | |
| RUN mkdir -p $HOME/app $HOME/.cache $HOME/.config && chmod -R 777 $HOME | |
| WORKDIR $HOME/app | |
| # βββββββββββββββββββββββββββββ | |
| # 5οΈβ£ Install Python packages (including JupyterLab) | |
| # βββββββββββββββββββββββββββββ | |
| # βββββββββββββββββββββββββββββ | |
| # 5οΈβ£ Install Python packages (including JupyterLab + Ansible) | |
| # βββββββββββββββββββββββββββββ | |
| COPY --chown=user requirements.txt ./requirements.txt | |
| RUN pip install --no-cache-dir --upgrade pip && \ | |
| pip install --no-cache-dir -r requirements.txt && \ | |
| pip install --no-cache-dir jupyterlab ansible-core | |
| # βββββββββββββββββββββββββββββ | |
| # 6οΈβ£ Extra packages + startup logic (as root) | |
| # βββββββββββββββββββββββββββββ | |
| USER root | |
| COPY packages.txt /root/packages.txt | |
| RUN xargs -r -a /root/packages.txt yum install -y && yum clean all | |
| COPY on_startup.sh /root/on_startup.sh | |
| RUN chmod +x /root/on_startup.sh && /root/on_startup.sh | |
| RUN mkdir -p /data && chown user:user /data | |
| # βββββββββββββββββββββββββββββ | |
| # 7οΈβ£ Copy project files | |
| # βββββββββββββββββββββββββββββ | |
| USER user | |
| COPY --chown=user . $HOME/app | |
| # Optional: override Jupyter login UI | |
| COPY --chown=user login.html /home/user/.local/lib/python3.12/site-packages/jupyter_server/templates/login.html | |
| RUN chmod +x start_server.sh | |
| # βββββββββββββββββββββββββββββ | |
| # 8οΈβ£ Runtime Environment | |
| # βββββββββββββββββββββββββββββ | |
| ENV GRADIO_ALLOW_FLAGGING=never \ | |
| GRADIO_NUM_PORTS=1 \ | |
| GRADIO_SERVER_NAME=0.0.0.0 \ | |
| GRADIO_THEME=huggingface \ | |
| SYSTEM=spaces | |
| # π Launch JupyterLab on $PORT (required by Hugging Face) | |
| CMD ["./start_server.sh"] | |