72 lines
2.3 KiB
Docker
72 lines
2.3 KiB
Docker
# 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"]
|