FROM python:3.11-slim ARG BESZEL_VERSION=0.18.7 ENV DEBIAN_FRONTEND=noninteractive \ PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 RUN useradd -m -u 1000 user && \ apt-get update && \ apt-get install -y --no-install-recommends \ bash \ ca-certificates \ curl \ git \ git-lfs \ tini && \ rm -rf /var/lib/apt/lists/* && \ mkdir -p /data/workspace /data/beszel-agent && \ chown -R user:user /data /home/user USER user ENV HOME=/home/user \ PATH=/home/user/.local/bin:$PATH \ HF_HOME=/data/.huggingface \ JUPYTER_ROOT_DIR=/data/workspace \ BESZEL_DATA_DIR=/data/beszel-agent \ BESZEL_LISTEN=45876 \ DISABLE_SSH=true \ DOCKER_HOST="" \ SKIP_SYSTEMD=true \ SKIP_GPU=true WORKDIR $HOME/app COPY --chown=user requirements.txt ./requirements.txt RUN python -m pip install --user --no-cache-dir --upgrade pip && \ python -m pip install --user --no-cache-dir -r requirements.txt RUN mkdir -p "$HOME/.local/bin" && \ curl -fsSL \ "https://github.com/henrygd/beszel/releases/download/v${BESZEL_VERSION}/beszel-agent_Linux_amd64.tar.gz" | \ tar -xz -C /tmp beszel-agent && \ install -m 0755 /tmp/beszel-agent "$HOME/.local/bin/beszel-agent" && \ rm -f /tmp/beszel-agent COPY --chown=user jupyter_server_config.py ./jupyter_server_config.py COPY --chown=user start-services.sh ./start-services.sh RUN chmod +x ./start-services.sh EXPOSE 7860 ENTRYPOINT ["/usr/bin/tini", "--"] CMD ["./start-services.sh"]