Spaces:
Sleeping
Sleeping
| FROM python:3.12-slim | |
| # System dependencies: ffmpeg + DejaVu fonts. | |
| RUN apt-get update && \ | |
| apt-get install -y --no-install-recommends \ | |
| ffmpeg \ | |
| fonts-dejavu-core \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Download Poppins fonts from GitHub (used by config.py _find_font). | |
| RUN mkdir -p /usr/share/fonts/truetype/google-fonts && \ | |
| python -c "import urllib.request; urllib.request.urlretrieve('https://github.com/google/fonts/raw/main/ofl/poppins/Poppins-Bold.ttf', '/usr/share/fonts/truetype/google-fonts/Poppins-Bold.ttf')" && \ | |
| python -c "import urllib.request; urllib.request.urlretrieve('https://github.com/google/fonts/raw/main/ofl/poppins/Poppins-Medium.ttf', '/usr/share/fonts/truetype/google-fonts/Poppins-Medium.ttf')" && \ | |
| python -c "import urllib.request; urllib.request.urlretrieve('https://github.com/google/fonts/raw/main/ofl/poppins/Poppins-Regular.ttf', '/usr/share/fonts/truetype/google-fonts/Poppins-Regular.ttf')" && \ | |
| python -c "import urllib.request; urllib.request.urlretrieve('https://github.com/google/fonts/raw/main/ofl/poppins/Poppins-Light.ttf', '/usr/share/fonts/truetype/google-fonts/Poppins-Light.ttf')" && \ | |
| fc-cache -f | |
| # Create non-root user (HF Spaces requirement). | |
| RUN useradd -m -u 1000 user | |
| USER user | |
| ENV HOME=/home/user PATH=/home/user/.local/bin:$PATH | |
| WORKDIR /app | |
| # Install Python dependencies. | |
| COPY --chown=user requirements.txt . | |
| RUN pip install --no-cache-dir --user -r requirements.txt | |
| # Copy application code. | |
| COPY --chown=user bar_race/ bar_race/ | |
| COPY --chown=user app.py . | |
| # Copy headshot assets. | |
| COPY --chown=user assets/headshots/ assets/headshots/ | |
| # Copy theme assets (background, fonts, logo) to the path render.py resolves | |
| # from. PROJECT_ROOT = dirname(dirname(dirname(__file__))), which is "/" in this | |
| # image (the package lives at /app/bar_race/render.py), so themes such as | |
| # hoopshype-official / hoopshype-official-gradient look up their bg_image, | |
| # font_custom_dir and logo_path under /assets/... — NOT /app/assets/... | |
| COPY --chown=user assets/backgrounds/ /assets/backgrounds/ | |
| COPY --chown=user assets/fonts/ /assets/fonts/ | |
| COPY --chown=user assets/logos/ /assets/logos/ | |
| EXPOSE 7860 | |
| CMD ["gunicorn", "app:app", "--bind", "0.0.0.0:7860", "--timeout", "300", "--workers", "1", "--threads", "4"] | |