# GPU-enabled worker image # Based on NVIDIA CUDA with Python for CuPy support FROM nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04 WORKDIR /app # Install Python 3.11 and system dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ python3.11 \ python3.11-venv \ python3-pip \ git \ ffmpeg \ && rm -rf /var/lib/apt/lists/* \ && ln -sf /usr/bin/python3.11 /usr/bin/python3 \ && ln -sf /usr/bin/python3 /usr/bin/python # Upgrade pip RUN python3 -m pip install --upgrade pip # Install CPU dependencies first COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # Install GPU-specific dependencies (CuPy for CUDA 12.x) RUN pip install --no-cache-dir cupy-cuda12x # Install decord for GPU-accelerated video decoding (keeps frames on GPU) # This avoids CPU<->GPU memory transfers during video decode RUN pip install --no-cache-dir decord # Copy application COPY . . # Clone effects repo RUN git clone https://git.rose-ash.com/art-dag/effects.git /app/artdag-effects # Create cache directory RUN mkdir -p /data/cache ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 ENV EFFECTS_PATH=/app/artdag-effects ENV PYTHONPATH=/app # GPU persistence enabled - frames stay on GPU throughout pipeline ENV STREAMING_GPU_PERSIST=1 # Use cluster's public IPFS gateway for HLS segment URLs ENV IPFS_GATEWAY_URL=https://celery-artdag.rose-ash.com/ipfs # Default command runs celery worker CMD ["celery", "-A", "celery_app", "worker", "--loglevel=info", "-E", "-Q", "gpu,celery"]