voxmed / Dockerfile
jay2219's picture
v1.0.0
ad8910e
Raw
History Blame Contribute Delete
1.44 kB
FROM python:3.10-slim
# Set cache directories to absolute paths to ensure consistency between build and run stages
ENV HF_HOME=/root/.cache/huggingface
ENV XDG_CACHE_HOME=/root/.cache
# Install system dependencies (audio packages, git, compile tools)
RUN apt-get update && apt-get install -y --no-install-recommends \
ffmpeg \
libsndfile1 \
git \
build-essential \
&& rm -rf /var/lib/apt/lists/*
# Set the working directory
WORKDIR /app
# Copy requirements and downloader first to cache models and dependencies
COPY requirements.txt .
COPY download_models.py .
# Create/configure virtual environment using the .venv path
RUN python -m venv .venv
ENV PATH="/app/.venv/bin:$PATH"
# Install Python packages (uses pip cache mount, increases timeout, and uses CPU-only PyTorch to reduce download size)
RUN --mount=type=cache,target=/root/.cache/pip \
pip install --default-timeout=100 --extra-index-url https://download.pytorch.org/whl/cpu -r requirements.txt
# Pre-download and bake all model weights into the image (this runs fully offline afterwards)
ARG HF_TOKEN
RUN HF_TOKEN=$HF_TOKEN python download_models.py
# Copy the rest of the application files (ignoring .venv via .dockerignore)
COPY . .
# Expose Gradio's default port
EXPOSE 7860
# Force Gradio to bind to 0.0.0.0 inside the container
ENV GRADIO_SERVER_NAME="0.0.0.0"
ENV PYTHONUNBUFFERED=1
# Start the Gradio application
CMD ["python", "app.py"]