Spaces:
Sleeping
Sleeping
| # Use NVIDIA CUDA base image (Ubuntu 22.04 jammy) | |
| FROM nvidia/cuda:12.3.2-devel-ubuntu22.04 | |
| # ---------------- Base env ---------------- | |
| ENV DEBIAN_FRONTEND=noninteractive | |
| ENV PYTHONUNBUFFERED=1 | |
| ENV CUDA_HOME=/usr/local/cuda | |
| ENV PATH=${CUDA_HOME}/bin:/usr/local/bin:${PATH} | |
| ENV LD_LIBRARY_PATH=${CUDA_HOME}/lib64:${LD_LIBRARY_PATH} | |
| # Fix OpenMP threads to a valid integer (libgomp warning) | |
| ENV OMP_NUM_THREADS=4 | |
| # Force headless: never try X11 DISPLAY | |
| # ENV DISPLAY="" | |
| # ---------------- System deps + Python 3.12 + headless GL ---------------- | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| software-properties-common \ | |
| ca-certificates \ | |
| curl wget git build-essential \ | |
| libgl1-mesa-glx libglib2.0-0 libsm6 libxext6 libxrender1 \ | |
| libgomp1 libgcc-s1 \ | |
| libosmesa6 libosmesa6-dev \ | |
| libegl1-mesa libegl1-mesa-dev \ | |
| && add-apt-repository ppa:deadsnakes/ppa -y \ | |
| && apt-get update && apt-get install -y --no-install-recommends \ | |
| python3.12 python3.12-dev python3.12-venv \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Install pip for Python 3.12 | |
| RUN curl -sS https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py \ | |
| && python3.12 /tmp/get-pip.py \ | |
| && rm /tmp/get-pip.py | |
| # Make 'python' and 'pip' point to Python 3.12 | |
| RUN ln -sf /usr/bin/python3.12 /usr/bin/python && \ | |
| ln -sf /usr/local/bin/pip3.12 /usr/local/bin/pip | |
| # ---------------- Writable app data & HF cache ---------------- | |
| ENV APP_DATA_DIR=/data | |
| ENV HF_HOME=/data/hf_home | |
| ENV HUGGINGFACE_HUB_CACHE=/data/hf_home | |
| ENV TRANSFORMERS_CACHE=/data/hf_home | |
| ENV MPLCONFIGDIR=/data/matplotlib | |
| RUN mkdir -p /data/geometry /data/solution /data/weights /data/hf_home /data/matplotlib \ | |
| && chmod -R 777 /data | |
| # ---------------- Install frpc for Gradio share=True ---------------- | |
| RUN mkdir -p /data/hf_home/gradio/frpc && \ | |
| wget https://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_linux_amd64 -O /data/hf_home/gradio/frpc/frpc_linux_amd64_v0.3 && \ | |
| chmod +x /data/hf_home/gradio/frpc/frpc_linux_amd64_v0.3 | |
| # ---------------- Application setup ---------------- | |
| WORKDIR /app | |
| # Copy requirements first (better caching) | |
| COPY requirements.txt . | |
| # Install Python deps | |
| RUN pip install --no-cache-dir --upgrade pip setuptools wheel \ | |
| && pip install --no-cache-dir -r requirements.txt | |
| # Copy the rest of the source code | |
| COPY . . | |
| # Permissions | |
| RUN chmod +x app.py | |
| RUN chown -R 1000:1000 /app | |
| # Expose Trame/Gradio port | |
| EXPOSE 7860 | |
| # Run app (Trame or Gradio, same entrypoint) | |
| # CMD ["python", "app.py"] | |
| # Run app on 0.0.0.0 so HF proxy can reach it | |
| CMD python app2.py --host 0.0.0.0 --port ${PORT:-7860} --server | |