FROM python:3.11-slim ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y \ wget \ gnupg \ ca-certificates \ fonts-liberation \ libasound2 \ libatk-bridge2.0-0 \ libatk1.0-0 \ libatspi2.0-0 \ libcups2 \ libdbus-1-3 \ libdrm2 \ libgbm1 \ libgtk-3-0 \ libnspr4 \ libnss3 \ libwayland-client0 \ libxcomposite1 \ libxdamage1 \ libxfixes3 \ libxkbcommon0 \ libxrandr2 \ xdg-utils \ libx11-xcb1 \ libxcb1 \ libxcursor1 \ libxi6 \ libxtst6 \ libpango-1.0-0 \ libcairo2 \ libgdk-pixbuf-2.0-0 \ xvfb \ x11vnc \ fluxbox \ dbus-x11 \ && rm -rf /var/lib/apt/lists/* RUN apt-get update && apt-get install -y \ firefox-esr \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # COPY requirements.txt . RUN pip install --no-cache-dir Flask flask-cors camoufox[geoip] asyncio Pillow RUN mkdir -p /root/.cache/camoufox && chmod -R 777 /root/.cache/camoufox RUN python3 -c "from camoufox.sync_api import Camoufox; Camoufox.install()" || echo "Camoufox install failed" RUN python3 -c "from camoufox.pkgman import install_geoip; install_geoip()" || echo "GeoIP install failed, continuing without it" COPY . . RUN mkdir -p public ENV DISPLAY=:99 ENV CAMOUFOX_HEADLESS=true ENV PYTHONUNBUFFERED=1 ENV CAMOUFOX_CACHE_DIR=/root/.cache/camoufox RUN echo '#!/bin/bash\n\ rm -rf /root/.cache/camoufox/gmp-clearkey 2>/dev/null || true\n\ rm -rf /root/.cache/camoufox/.lock 2>/dev/null || true\n\ Xvfb :99 -screen 0 1920x1080x24 -ac +extension GLX +render -noreset &\n\ sleep 2\n\ python app.py' > /app/start.sh && chmod +x /app/start.sh RUN camoufox fetch EXPOSE 7860 CMD ["/app/start.sh"]