62 lines
1.5 KiB
Docker
62 lines
1.5 KiB
Docker
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"]
|