# cuda-grid-controller — Python sidecar для vf_cuda_grid filter. FROM python:3.11-slim AS base ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 WORKDIR /app # ffmpeg для snapshot endpoint — нужен basic CPU build (RTSP read + PNG output). # Размер: ~120 MB additional (ffmpeg + libs); приемлемо для controller image. RUN apt-get update && apt-get install -y --no-install-recommends \ ffmpeg \ && rm -rf /var/lib/apt/lists/* # Install deps первым layer — пересборка только при изменении pyproject.toml COPY pyproject.toml ./ RUN pip install --no-cache-dir \ fastapi \ "uvicorn[standard]" \ pydantic \ pydantic-settings \ aiomqtt \ pyzmq \ pyyaml \ structlog \ typer \ sse-starlette \ pillow \ httpx \ jinja2 \ playwright # Playwright headless Chromium для browser-rendered overlays (Grafana, чаты). # install-deps добавляет system libs (libnss3, libxkbcommon0, libgbm1...). # Chromium ~170 MB + system deps ~150 MB. Можно отключить если dashboards # не нужны: убрать `playwright` из pip и закомментировать ниже. RUN playwright install --with-deps chromium # Source code COPY cuda_grid_controller ./cuda_grid_controller COPY examples ./examples RUN pip install --no-cache-dir -e . EXPOSE 8080 ENTRYPOINT ["cuda-grid-controller"] CMD ["--config", "/app/controller.yaml"]