# Set environment variable to prevent interactive prompts during package installation ENV DEBIAN_FRONTEND=noninteractive # Install all potential system-level dependencies for a full Manim installation # This "kitchen sink" approach helps prevent future build errors. RUN apt-get update && apt-get install -y --no-install-recommends \ # --- Core Build Tools --- build-essential \ pkg-config \ # --- Manim Dependencies --- ffmpeg \ texlive-full \ libcairo2-dev \ libpango1.0-dev \ # --- Extra Dependencies for Optional Features (e.g., manim-voiceover) --- libgl1-mesa-glx \ libglib2.0-0 \ libsm6 \ libxext6 \ libxrender1 \ espeak \ sox \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # Install Python packages specified in requirements.txt RUN pip install --no-cache-dir --upgrade -r requirements.txt # Copy all the application files (app.py, proof.py, etc.) into the container COPY . . # Expose the port Gradio runs on (7860) EXPOSE 7860 # The command to run when the container starts: launch the Gradio app CMD ["gradio", "app.py"]