POV / Dockerfile
garyuzair's picture
Update Dockerfile
14efaa5 verified
# Use an official Python runtime as a parent image
FROM python:3.9-slim
# Set the working directory in the container
WORKDIR /app
# Install system dependencies:
# - build-essential: For compiling some Python packages if needed
# - curl, git, software-properties-common: General utilities, git for some pip installs
# - ffmpeg: For video processing
# - python3-dev: For C extensions if any Python package needs to build them
# - libsndfile1: For soundfile to work correctly
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
curl \
git \
software-properties-common \
ffmpeg \
python3-dev \
libsndfile1 \
&& rm -rf /var/lib/apt/lists/*
# Copy the requirements file into the container at /app
COPY requirements.txt ./
# Install any needed packages specified in requirements.txt
# --no-cache-dir: Reduces image size by not storing the pip cache
# It's good practice to upgrade pip first
RUN pip install --no-cache-dir --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt
# Copy the rest of the application code into the container at /app
COPY . .
# Make port 7860 available to the world outside this container (Streamlit default)
# Hugging Face Spaces will handle the actual port mapping.
EXPOSE 7860
# Define environment variables for Hugging Face Hub caching (optional but good practice)
# These will be overridden by HF Spaces secrets/vars if set there, but good defaults.
ENV HUGGINGFACE_HUB_CACHE=/app/.cache/huggingface/hub
ENV HF_HOME=/app/.cache/huggingface
ENV TRANSFORMERS_CACHE=/app/.cache/huggingface/hub
ENV DIFFUSERS_CACHE=/app/.cache/huggingface/hub
# Create the cache directory and set permissions (if needed, usually pip creates it)
# RUN mkdir -p /app/.cache/huggingface/hub && chmod -R 777 /app/.cache
# Command to run the Streamlit application
# The --server.port and --server.address are important for HF Spaces.
# --server.fileWatcherType none can prevent issues in some environments.
CMD ["streamlit", "run", "app.py", "--server.port=7860", "--server.address=0.0.0.0", "--server.fileWatcherType=none"]