FROM nvidia/cuda:12.8.1-cudnn-runtime-ubuntu22.04

ARG DEBIAN_FRONTEND=noninteractive
ARG PYTORCH_INDEX_URL=https://download.pytorch.org/whl/cu128

ENV PYTHONUNBUFFERED=1 \
    PIP_NO_CACHE_DIR=1 \
    TZ=UTC

RUN apt-get update && apt-get install -y --no-install-recommends \
    python3 \
    python3-pip \
    python3-venv \
    ffmpeg \
    libgl1 \
    libglib2.0-0 \
    libgomp1 \
    libsm6 \
    libxext6 \
    libxrender1 \
    v4l-utils \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app

COPY requirements-docker.txt /tmp/requirements-docker.txt

RUN python3 -m pip install --upgrade pip setuptools wheel && \
    python3 -m pip install --index-url ${PYTORCH_INDEX_URL} torch torchvision && \
    python3 -m pip install -r /tmp/requirements-docker.txt

COPY . /app

RUN mkdir -p /data/out /data/guidance /data/autopilot /app/docker && \
    chmod +x /app/docker/entrypoint.sh

ENV FPV_MODEL_PATH=/app/best.pt \
    FPV_SHOW_OUTPUT=0 \
    FPV_SAVE_INFER_VIDEO=1 \
    FPV_OUT_VIDEO_PATH=/data/out/out_infer.mp4 \
    FPV_GUIDANCE_EXPORT_ENABLE=1 \
    FPV_GUIDANCE_EXPORT_PATH=/data/guidance/guidance_state.json \
    FPV_AUTOPILOT_ENABLE=1 \
    FPV_AUTOPILOT_BACKEND=json \
    FPV_AUTOPILOT_JSON_PATH=/data/autopilot/autopilot_cmd.json \
    FPV_PROTO_UDP_ENABLE=0 \
    FPV_PROTO_UDP_HOST=127.0.0.1 \
    FPV_PROTO_UDP_PORT=5005

ENTRYPOINT ["/app/docker/entrypoint.sh"]
CMD ["python3", "main.py"]
