telegram-clipper / Dockerfile
Baha Joe
Final Dockerfile with all permission, PATH, and dependency fixes
d6f5e42
# 1. Base Image: Uses PyTorch base to avoid installation failures for numpy/torch
FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime
# Environment Variables
ENV PYTHONUNBUFFERED=1
# Set PATH to find locally installed binaries (crucial for yt-dlp, whisper)
ENV PATH="/home/user/.local/bin:$PATH"
# Install system dependencies (FFmpeg is required for moviepy)
RUN apt-get update && apt-get install -y --no-install-recommends \
ffmpeg \
libsm6 \
libxext6 \
python3-pip \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /home/user/app
# 2. Create the non-root user
RUN useradd -m user
# 3. Install remaining Python dependencies with --user flag
# This installs packages into the user's local directory, bypassing system conflicts.
COPY requirements.txt .
RUN pip install --no-cache-dir --user -r requirements.txt
# 4. Create directories and set full ownership/permissions
# This must run as root before switching to the limited user.
RUN mkdir -p downloads clips && chown -R user:user /home/user/app /home/user/.local
# 5. Switch to the limited user for security and runtime execution
USER user
# 6. Copy application code (owned by 'user')
COPY --chown=user:user . .
# 7. Run the application
CMD ["python3", "bot.py"]