FROM node:22-slim WORKDIR /app SHELL ["/bin/bash", "-o", "pipefail", "-c"] # hadolint ignore=DL3008 RUN set -ex; \ export DEBIAN_FRONTEND=noninteractive; \ apt-get update; \ apt-get install -y --no-install-recommends \ python3 \ python3-pip \ python3-full \ ffmpeg \ curl \ unzip; \ curl -fsSL https://deno.land/install.sh | sh; \ rm -rf /var/lib/apt/lists/* ENV DENO_INSTALL="/root/.deno" ENV PATH="$DENO_INSTALL/bin:$PATH" RUN python3 -m venv /opt/tool-venv \ && /opt/tool-venv/bin/pip install --upgrade pip \ && /opt/tool-venv/bin/pip install --upgrade --pre yt-dlp kaggle yt-dlp-getpot-wpc ENV PATH="/opt/tool-venv/bin:$PATH" # shared has its own deps (zod) the schemas need WORKDIR /app/shared COPY web/shared/ ./ RUN npm ci WORKDIR /app/backend COPY web/backend/package*.json ./ RUN npm ci COPY web/backend/ ./ RUN npx tsc RUN mkdir -p temp && chmod 777 temp ENV PORT=8000 ENV API_ONLY=true EXPOSE 8000 CMD ["node", "--import", "./dist/backend/src/instrument.js", "dist/backend/src/app.js"]