FROM ghcr.io/astral-sh/uv:latest as uv
FROM nvidia/cuda:12.8.0-runtime-ubuntu22.04

# Install minimal dependencies for uv
RUN apt-get update && apt-get install -y \
    curl \
    ca-certificates \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Copy uv
COPY --from=uv /uv /uvx /bin/

# Install Python 3.13 using uv
RUN uv python install 3.13

# Create app directory
WORKDIR /app

# Create pyproject.toml
COPY <<EOF pyproject.toml
[project]
name = "pytorch-cuda-app"
version = "0.1.0"
requires-python = ">=3.13"
dependencies = [
    "torch>=2.7.0",
    "torchvision>=0.22.0",
]

[[tool.uv.index]]
name = "pytorch-cu128"
url = "https://download.pytorch.org/whl/cu128"

[tool.uv.sources]
torch = { index = "pytorch-cu128" }
torchvision = { index = "pytorch-cu128" }
EOF

# Install dependencies with cache mount
RUN --mount=type=cache,target=/root/.cache/uv \
    UV_LINK_MODE=copy \
    uv sync --frozen --no-install-project

# Copy application code
COPY . .

# Final sync
RUN --mount=type=cache,target=/root/.cache/uv \
    uv sync --frozen

CMD ["uv", "run", "python", "-m", "myapp"]