92 lines
2.9 KiB
Docker
92 lines
2.9 KiB
Docker
|
|
# Dockerfile.rvc - Multi-stage build for RVC API Server using host ROCm
|
||
|
|
# Final image size target: <20GB (down from 85GB)
|
||
|
|
# Python: 3.10.x | pip: 24.0 | PyTorch: 2.5.1+rocm6.2
|
||
|
|
|
||
|
|
# ============================================================
|
||
|
|
# STAGE 1: BUILD - Install all dependencies and compile extensions
|
||
|
|
# ============================================================
|
||
|
|
FROM ubuntu:22.04 AS builder
|
||
|
|
|
||
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
||
|
|
ENV TZ=UTC
|
||
|
|
|
||
|
|
# Install system dependencies and Python 3.10
|
||
|
|
RUN apt-get update && apt-get install -y \
|
||
|
|
python3.10 \
|
||
|
|
python3.10-dev \
|
||
|
|
python3-pip \
|
||
|
|
git \
|
||
|
|
wget \
|
||
|
|
build-essential \
|
||
|
|
libsndfile1-dev \
|
||
|
|
&& rm -rf /var/lib/apt/lists/*
|
||
|
|
|
||
|
|
# Make python3.10 the default
|
||
|
|
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.10 1 && \
|
||
|
|
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
|
||
|
|
|
||
|
|
WORKDIR /app
|
||
|
|
|
||
|
|
# Copy requirements files
|
||
|
|
COPY requirements-rvc.txt /app/
|
||
|
|
|
||
|
|
# Install pip and Python dependencies
|
||
|
|
# Install PyTorch 2.5.1+rocm6.2 from official wheel (supports gfx1030/RX 6800)
|
||
|
|
RUN pip install --no-cache-dir pip==24.0 && \
|
||
|
|
pip install --no-cache-dir torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/rocm6.2 && \
|
||
|
|
pip install --no-cache-dir -r requirements-rvc.txt && \
|
||
|
|
pip uninstall -y apex || true && \
|
||
|
|
pip install --no-cache-dir numpy==1.23.5 scipy==1.15.3 numba==0.56.4
|
||
|
|
|
||
|
|
# Copy RVC WebUI (models and code)
|
||
|
|
COPY Retrieval-based-Voice-Conversion-WebUI/ /app/Retrieval-based-Voice-Conversion-WebUI/
|
||
|
|
|
||
|
|
# Copy application files
|
||
|
|
COPY soprano_rvc_api.py /app/
|
||
|
|
COPY soprano_rvc_config.json /app/
|
||
|
|
COPY rvc_config.json /app/
|
||
|
|
COPY rvc_torch_patch.py /app/
|
||
|
|
|
||
|
|
# ============================================================
|
||
|
|
# STAGE 2: RUNTIME - Minimal runtime with only necessary files
|
||
|
|
# ============================================================
|
||
|
|
FROM ubuntu:22.04
|
||
|
|
|
||
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
||
|
|
ENV TZ=UTC
|
||
|
|
|
||
|
|
# Install only runtime dependencies (no build tools)
|
||
|
|
RUN apt-get update && apt-get install -y \
|
||
|
|
python3.10 \
|
||
|
|
python3-pip \
|
||
|
|
libsndfile1 \
|
||
|
|
ffmpeg \
|
||
|
|
curl \
|
||
|
|
&& rm -rf /var/lib/apt/lists/* \
|
||
|
|
&& apt-get clean
|
||
|
|
|
||
|
|
# Make python3.10 the default
|
||
|
|
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.10 1 && \
|
||
|
|
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
|
||
|
|
|
||
|
|
WORKDIR /app
|
||
|
|
|
||
|
|
# Copy installed Python packages from builder
|
||
|
|
COPY --from=builder /usr/local/lib/python3.10 /usr/local/lib/python3.10
|
||
|
|
|
||
|
|
# Copy application and models
|
||
|
|
COPY --from=builder /app /app
|
||
|
|
|
||
|
|
# Expose HTTP API port
|
||
|
|
EXPOSE 8765
|
||
|
|
|
||
|
|
# Health check
|
||
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=120s --retries=3 \
|
||
|
|
CMD curl -f http://localhost:8765/health || exit 1
|
||
|
|
|
||
|
|
# Environment variable for Soprano server connection
|
||
|
|
ENV SOPRANO_SERVER=tcp://soprano:5555
|
||
|
|
|
||
|
|
# Run RVC API server
|
||
|
|
CMD ["python", "soprano_rvc_api.py"]
|