# Use NVIDIA CUDA base image for GPU access and nvidia-smi FROM nvidia/cuda:12.2.0-runtime-ubuntu22.04 # Set non-interactive frontend for apt ENV DEBIAN_FRONTEND=noninteractive # Add NVIDIA CUDA repository for nvidia-smi RUN apt-get update && apt-get install -y wget software-properties-common \ && wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb \ && dpkg -i cuda-keyring_1.1-1_all.deb \ && rm cuda-keyring_1.1-1_all.deb \ && apt-get update \ && rm -rf /var/lib/apt/lists/* # Install Node.js 20, ffmpeg, nvidia-smi, build tools, and other dependencies RUN apt-get update && apt-get install -y \ curl \ ca-certificates \ gnupg \ ffmpeg \ python3 \ make \ g++ \ nvidia-utils-535 \ tesseract-ocr \ tesseract-ocr-eng \ && rm -rf /var/lib/apt/lists/* # Install Node.js 20 from NodeSource RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ && apt-get install -y nodejs \ && rm -rf /var/lib/apt/lists/* # Install Docker CLI from official Docker repository RUN install -m 0755 -d /etc/apt/keyrings \ && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg \ && chmod a+r /etc/apt/keyrings/docker.gpg \ && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable" > /etc/apt/sources.list.d/docker.list \ && apt-get update \ && apt-get install -y docker-ce-cli \ && rm -rf /var/lib/apt/lists/* # Install yt-dlp (latest stable release) RUN curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp \ && chmod a+rx /usr/local/bin/yt-dlp # Install pnpm 9.x RUN corepack enable && corepack prepare pnpm@9.14.4 --activate WORKDIR /app # Copy workspace root files first COPY package.json pnpm-workspace.yaml ./ COPY pnpm-lock.yaml* ./ # Copy all packages (needed for workspace resolution) COPY packages/shared ./packages/shared COPY packages/api ./packages/api # Install dependencies RUN pnpm install --frozen-lockfile || pnpm install # Build shared first, then api WORKDIR /app/packages/api # Create data directory RUN mkdir -p /app/data EXPOSE 3001 CMD ["pnpm", "dev"]