FROM node:24-bookworm-slim AS frontend-builder ARG HTTP_PROXY ARG HTTPS_PROXY ARG ALL_PROXY ARG NO_PROXY ARG http_proxy ARG https_proxy ARG all_proxy ARG no_proxy WORKDIR /build/frontend COPY frontend/package*.json ./ RUN npm ci COPY frontend/ ./ RUN npm run build FROM python:3.12-slim AS app ARG HTTP_PROXY ARG HTTPS_PROXY ARG ALL_PROXY ARG NO_PROXY ARG http_proxy ARG https_proxy ARG all_proxy ARG no_proxy ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ PIP_NO_CACHE_DIR=1 \ BILIUP_NEXT_CONTAINER=1 WORKDIR /app RUN apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ curl \ ffmpeg \ && rm -rf /var/lib/apt/lists/* COPY pyproject.toml README.md ./ COPY src ./src COPY config ./config COPY runtime/README.md runtime/cookies.example.json runtime/upload_config.example.json ./runtime/ COPY --from=frontend-builder /build/frontend/dist ./frontend/dist COPY --from=frontend-builder /usr/local/bin/node /usr/local/bin/node COPY --from=frontend-builder /usr/local/lib/node_modules /usr/local/lib/node_modules RUN pip install --editable . \ && pip install yt-dlp \ && ln -sf ../lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm \ && ln -sf ../lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx \ && npm install -g @openai/codex RUN mkdir -p /app/data/workspace/stage /app/data/workspace/session /app/data/workspace/backup /app/runtime/logs /root/.codex EXPOSE 8000 CMD ["biliup-next", "serve", "--host", "0.0.0.0", "--port", "8000"]