FROM python:3.12-slim ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_DISABLE_PIP_VERSION_CHECK=1 \ PIP_DEFAULT_TIMEOUT=300 RUN groupadd --system app && useradd --system --gid app --create-home app WORKDIR /app COPY pyproject.toml uv.lock ./ RUN pip install --no-cache-dir --retries 10 uv \ && uv export --format requirements-txt --no-dev --no-hashes --no-emit-project --frozen -o /tmp/requirements.txt \ && pip install --no-cache-dir --retries 10 -r /tmp/requirements.txt COPY . . RUN pip install --no-cache-dir --retries 10 "setuptools>=68" RUN pip install --no-cache-dir --no-build-isolation -e . RUN python -m compileall -q encar_scraper RUN chmod +x entrypoint.sh RUN chown -R app:app /app STOPSIGNAL SIGINT USER app # По умолчанию API, но worker/beat переопределяют CMD в docker-compose ENTRYPOINT ["./entrypoint.sh"] CMD ["uvicorn", "encar_scraper.api.app:app", "--host", "0.0.0.0", "--port", "8000"]