FROM python:3.11-slim-bookworm # 1. Install System Dependencies # Added 'fluxbox' (Window Manager) - CRITICAL for browser rendering # Added 'xdotool' for input simulation/wake-up RUN apt-get update && apt-get install -y \ xvfb \ fluxbox \ xdotool \ wget \ curl \ gnupg \ procps \ libx11-6 \ libxtst6 \ libxext6 \ libxrender1 \ libxi6 \ # Opera/Chrome Dependencies libnss3 \ libatk1.0-0 \ libatk-bridge2.0-0 \ libcups2 \ libdrm2 \ libgbm1 \ libasound2 \ libpangocairo-1.0-0 \ libgtk-3-0 \ fonts-liberation \ xdg-utils \ && rm -rf /var/lib/apt/lists/* # 2. Install Opera Browser RUN curl -fsSL https://deb.opera.com/archive.key | gpg --dearmor -o /usr/share/keyrings/opera-browser-keyring.gpg && \ echo "deb [signed-by=/usr/share/keyrings/opera-browser-keyring.gpg] https://deb.opera.com/opera-stable/ stable non-free" \ | tee /etc/apt/sources.list.d/opera-stable.list && \ apt-get update && \ apt-get install -y opera-stable # 3. Setup User RUN useradd -m -u 1000 user WORKDIR /home/user/app # 4. Install Python Libraries RUN pip3 install --no-cache-dir \ aiortc \ aiohttp \ mss \ numpy \ pillow \ python-xlib \ uvloop # 5. Finalize Setup COPY --chown=user:user . . USER user ENV DISPLAY=:99 ENV PYTHONUNBUFFERED=1 EXPOSE 7860 CMD ["python3", "app.py"]