# BreakPilot Transcription Worker # GPU-optimized container for faster-whisper + pyannote.audio # # Build: docker build -f Dockerfile.worker -t breakpilot-transcription-worker . # Run: docker run --gpus all breakpilot-transcription-worker FROM python:3.11-slim # Set environment variables ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 \ PIP_DISABLE_PIP_VERSION_CHECK=1 # Install system dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ ffmpeg \ libsndfile1 \ git \ curl \ && rm -rf /var/lib/apt/lists/* # Create app user (non-root) RUN useradd --create-home --shell /bin/bash worker WORKDIR /app # Install Python dependencies for transcription COPY requirements-worker.txt . RUN pip install --no-cache-dir -r requirements-worker.txt # Copy worker package COPY transcription_worker/ ./transcription_worker/ # Change ownership RUN chown -R worker:worker /app # Switch to non-root user USER worker # Create cache directories RUN mkdir -p /home/worker/.cache/huggingface \ && mkdir -p /tmp/transcriptions # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ CMD python -c "from transcription_worker.transcriber import WhisperTranscriber; print('OK')" || exit 1 # Entry point - RQ worker CMD ["python", "-m", "transcription_worker.worker"]