46 lines
1.6 KiB
Docker
46 lines
1.6 KiB
Docker
# Node (pnpm) ------------------------------------------------------------------
|
|
FROM node:22-slim AS ui
|
|
ENV PNPM_HOME="/pnpm"
|
|
ENV PATH="$PNPM_HOME:$PATH"
|
|
RUN corepack prepare pnpm@10.0.0 --activate && corepack enable
|
|
COPY . /usr/src/yt-dlp-webui
|
|
|
|
WORKDIR /usr/src/yt-dlp-webui/frontend
|
|
|
|
RUN rm -rf node_modules
|
|
|
|
RUN pnpm install
|
|
RUN pnpm run build
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Go --------------------------------------------------------------------------
|
|
FROM golang AS build
|
|
|
|
WORKDIR /usr/src/yt-dlp-webui
|
|
|
|
COPY . .
|
|
COPY --from=ui /usr/src/yt-dlp-webui/frontend /usr/src/yt-dlp-webui/frontend
|
|
|
|
RUN CGO_ENABLED=0 GOOS=linux go build -o yt-dlp-webui
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Runtime ---------------------------------------------------------------------
|
|
FROM alpine
|
|
|
|
RUN apk update && \
|
|
apk add ffmpeg ca-certificates curl wget gnutls && \
|
|
RELEASE=$(curl --silent "https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') && \
|
|
if [ $(apk --print-arch) == "aarch64" ]; then curl -L -o yt-dlp "https://github.com/yt-dlp/yt-dlp/releases/download/$RELEASE/yt-dlp_linux_aarch64"; else curl -L -o yt-dlp "https://github.com/yt-dlp/yt-dlp/releases/download/$RELEASE/yt-dlp_linux"; fi; && \
|
|
chmod +x ./yt-dlp && \
|
|
mv ./yt-dlp /usr/bin/yt-dlp
|
|
|
|
VOLUME /downloads /config
|
|
|
|
WORKDIR /app
|
|
|
|
COPY --from=build /usr/src/yt-dlp-webui/yt-dlp-webui /app
|
|
|
|
ENV JWT_SECRET=secret
|
|
|
|
EXPOSE 3033
|
|
ENTRYPOINT [ "./yt-dlp-webui" , "--out", "/downloads", "--conf", "/config/config.yml", "--db", "/config/local.db" ] |