FROM python:3.12-slim-bookworm ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright RUN apt-get update \ && apt-get install -y --no-install-recommends \ curl \ ca-certificates \ bash \ build-essential \ libasound2 \ libatk-bridge2.0-0 \ libatk1.0-0 \ libc6 \ libcairo2 \ libcups2 \ libdbus-1-3 \ libdrm2 \ libgbm1 \ libglib2.0-0 \ libgtk-3-0 \ libnspr4 \ libnss3 \ libpango-1.0-0 \ libx11-6 \ libx11-xcb1 \ libxcb1 \ libxcomposite1 \ libxdamage1 \ libxext6 \ libxfixes3 \ libxkbcommon0 \ libxrandr2 \ wget \ xdg-utils \ && rm -rf /var/lib/apt/lists/* RUN groupadd --system app && useradd --system --gid app --create-home app WORKDIR /app COPY pyproject.toml uv.lock ./ RUN pip install --no-cache-dir uv \ && uv export --format requirements-txt --no-dev --no-hashes --no-emit-project --frozen -o /tmp/requirements.txt \ && pip install --no-cache-dir -r /tmp/requirements.txt \ && pip install --no-cache-dir playwright-stealth # Ставим Chromium и Firefox. # По умолчанию используем Chromium. RUN python -m playwright install chromium firefox COPY . . RUN pip install --no-cache-dir -e . RUN python -m compileall -q dubizzle_scraper RUN sed -i 's/\r$//' /app/entrypoint.sh RUN chmod +x entrypoint.sh RUN chown -R app:app /app STOPSIGNAL SIGINT USER app # По умолчанию запускаем API. ENTRYPOINT ["./entrypoint.sh"] CMD ["uvicorn", "dubizzle_scraper.api.app:app", "--host", "0.0.0.0", "--port", "8000"]