| FROM python:slim |
| ENV PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1 DEBIAN_FRONTEND=noninteractive HOME=/home/user PLAYWRIGHT_BROWSERS_PATH=/home/user/.cache/ms-playwright PATH="/home/user/.local/bin:${PATH}" |
| RUN apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends libasound2 libgtk-3-0 git sed && apt-get clean && rm -rf /var/lib/apt/lists/* |
| RUN useradd -m -u 1000 user |
| USER user |
| WORKDIR /home/user/app |
| RUN git clone https://github.com/najibyahya/Turnstile-Solver . && \ |
| rm -f config.json && \ |
| echo '{"headless":true,"thread":2,"page_count":2,"proxy_support":false,"proxy_file":"proxies.txt","host":"0.0.0.0","port":7860,"debug":true,"cleanup_interval_minutes":10}' > config.json && \ |
| cat config.json && \ |
| pip install --no-cache-dir --user fastapi==0.95.2 uvicorn "camoufox[fetch]" loguru psutil playwright && \ |
| python3 -m camoufox fetch && \ |
| playwright install firefox |
| EXPOSE 7860 |
| CMD ["python3", "-c", "import api_server; import uvicorn; config = api_server._load_config(); app = api_server.create_app(headless=config['headless'], thread=config['thread'], page_count=config['page_count'], proxy_support=config['proxy_support'], proxy_file=config.get('proxy_file', 'proxies.txt'), cleanup_interval_minutes=config.get('cleanup_interval_minutes', 10)); uvicorn.run(app, host=config['host'], port=config['port'])"] |