Nexstream / Dockerfile
ejjays's picture
fix: bulletproof direct deno binary install
9b17eca
Raw
History Blame Contribute Delete
1.47 kB
FROM node:20
# Install system dependencies: Python3, FFmpeg, and Deno
RUN apt-get update && apt-get install -y \
python3 \
python3-pip \
python3-full \
ffmpeg \
curl \
unzip \
iputils-ping \
dnsutils \
&& curl -fsSL https://github.com/denoland/deno/releases/latest/download/deno-x86_64-unknown-linux-gnu.zip -o deno.zip \
&& unzip deno.zip \
&& mv deno /usr/bin/deno \
&& rm deno.zip \
&& rm -rf /var/lib/apt/lists/*
# Deno is now in /usr/bin/deno
# Create a virtual environment and install yt-dlp
# specific date to bust cache and force update: 2026-01-11
RUN python3 -m venv /opt/yt-dlp-venv \
&& /opt/yt-dlp-venv/bin/pip install --upgrade pip \
&& /opt/yt-dlp-venv/bin/pip install -U yt-dlp
# Add the venv to the PATH so 'yt-dlp' is available directly
ENV PATH="/opt/yt-dlp-venv/bin:$PATH"
WORKDIR /app
# The 'node' image already has a user named 'node' with UID 1000.
# We don't need to create a new user, just use the existing one.
# Copy package files first
COPY package*.json ./
RUN npm install --production
# Copy the rest of the app
COPY . .
# Create temp dir and set permissions for the 'node' user
# We change ownership of /app so 'node' can write to it
RUN mkdir -p temp/yt-dlp-cache \
&& chown -R node:node /app \
&& chmod -R 777 temp
# Switch to the existing non-root user 'node'
USER node
# Hugging Face expects port 7860
ENV PORT=7860
EXPOSE 7860
CMD ["node", "index.js"]