# Dockerfile untuk RunPod Deployment FROM python:3.13-slim # Set labels untuk RunPod LABEL maintainer="abdan.hafidz@gmail.com" LABEL version="1.0" LABEL description="A.I Sakura Backend" # Install system dependencies RUN apt-get update && \ apt-get install -y \ ffmpeg \ curl \ wget \ git \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # Create app user RUN useradd -m -u 1001 appuser # Set working directory WORKDIR /rag_be # Environment variables untuk caching ENV HF_HOME=/src/.cache/huggingface ENV TRANSFORMERS_CACHE=/src/.cache/transformers ENV TORCH_HOME=/src/.cache/torch ENV XDG_CACHE_HOME=/src/.cache ENV TMPDIR=/tmp ENV WHISPER_CACHE_DIR=/src/.cache/whisper ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 # Copy requirements dan install dependencies COPY requirements.txt ./ RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir --upgrade -r requirements.txt && \ pip uninstall torch torchvision torchaudio -y && \ pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126 # Copy application code COPY --chown=appuser:appuser . /rag_be # Create necessary directories dengan permissions yang tepat RUN mkdir -p \ /src/.cache/whisper \ /src/.cache/huggingface \ /src/.cache/transformers \ /src/.cache/torch \ /rag_be/data/vectorstore \ /rag_be/data/documents \ /rag_be/logs && \ chown -R appuser:appuser /src /rag_be && \ chmod -R 755 /src /rag_be # Health check untuk RunPod HEALTHCHECK --interval=30s --timeout=30s --start-period=60s --retries=3 \ CMD curl -f http://localhost:7860/health || exit 1 # Switch to non-root user USER appuser # Expose ports EXPOSE 7860 # Default command - dapat di-override oleh RunPod CMD ["python", "main.py", "--mode", "rtc-cs-ui", "--port", "7860"]