Files
noteflow/docker/Dockerfile.rocm

90 lines
2.8 KiB
Docker

# syntax=docker/dockerfile:1
ARG ROCM_VERSION=6.4.1
ARG ROCM_PYTORCH_RELEASE=2.6.0
ARG SPACY_MODEL_URL=https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0-py3-none-any.whl
# =============================================================================
# Base Stage - ROCm PyTorch image
# =============================================================================
FROM rocm/pytorch:rocm${ROCM_VERSION}_ubuntu24.04_py3.12_pytorch_release_${ROCM_PYTORCH_RELEASE} AS base
LABEL maintainer="NoteFlow Team"
LABEL description="NoteFlow with ROCm GPU support for AMD GPUs"
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
UV_COMPILE_BYTECODE=1 \
UV_LINK_MODE=copy \
PATH=/usr/local/bin:$PATH
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
pkg-config \
python3-venv \
portaudio19-dev \
libsndfile1 \
ffmpeg \
git \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
COPY pyproject.toml uv.lock* ./
COPY README.md ./
COPY src ./src/
ENV VIRTUAL_ENV=/opt/venv
RUN uv venv --system-site-packages ${VIRTUAL_ENV}
ENV PATH="${VIRTUAL_ENV}/bin:$PATH"
# =============================================================================
# Production Server Stage (minimal deps)
# =============================================================================
FROM base AS server
ARG SPACY_MODEL_URL
RUN uv pip install --python ${VIRTUAL_ENV}/bin/python -e ".[rocm]"
RUN uv pip install --python ${VIRTUAL_ENV}/bin/python ${SPACY_MODEL_URL}
COPY . .
ENV ROCM_PATH=/opt/rocm \
HIP_VISIBLE_DEVICES=0 \
HSA_OVERRIDE_GFX_VERSION="" \
NOTEFLOW_ASR_DEVICE=rocm \
NOTEFLOW_FEATURE_ROCM_ENABLED=true
RUN useradd --create-home --shell /bin/bash noteflow
USER noteflow
EXPOSE 50051
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD python -c "import grpc; channel = grpc.insecure_channel('localhost:50051'); grpc.channel_ready_future(channel).result(timeout=5)" || exit 1
CMD ["python", "-m", "noteflow.grpc.server"]
# =============================================================================
# Development Server Stage (all extras + hot reload)
# =============================================================================
FROM base AS dev
ARG SPACY_MODEL_URL
RUN uv pip install --python ${VIRTUAL_ENV}/bin/python -e ".[rocm,optional]"
RUN uv pip install --python ${VIRTUAL_ENV}/bin/python watchfiles
RUN uv pip install --python ${VIRTUAL_ENV}/bin/python ${SPACY_MODEL_URL}
COPY . .
ENV ROCM_PATH=/opt/rocm \
HIP_VISIBLE_DEVICES=0 \
HSA_OVERRIDE_GFX_VERSION="" \
NOTEFLOW_ASR_DEVICE=rocm \
NOTEFLOW_FEATURE_ROCM_ENABLED=true
EXPOSE 50051
CMD ["python", "scripts/dev_watch_server.py"]