Prepare Linux deployment with yt-dlp and persistent downloads
This commit is contained in:
+50
@@ -0,0 +1,50 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
|
||||
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
|
||||
WORKDIR /src
|
||||
|
||||
COPY TuneRipper.Shared/TuneRipper.Shared.csproj TuneRipper.Shared/
|
||||
COPY TuneRipper/TuneRipper.csproj TuneRipper/
|
||||
COPY TuneRipper.Api/TuneRipper.Api.csproj TuneRipper.Api/
|
||||
RUN dotnet restore TuneRipper.Api/TuneRipper.Api.csproj \
|
||||
&& dotnet restore TuneRipper/TuneRipper.csproj
|
||||
|
||||
COPY . .
|
||||
RUN dotnet publish TuneRipper/TuneRipper.csproj -c Release -o /out/client --no-restore \
|
||||
&& dotnet publish TuneRipper.Api/TuneRipper.Api.csproj -c Release -o /out/api --no-restore
|
||||
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:10.0-bookworm-slim AS runtime
|
||||
ARG TARGETARCH
|
||||
ARG YT_DLP_VERSION=2026.08.19
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends ca-certificates curl ffmpeg \
|
||||
&& case "$TARGETARCH" in \
|
||||
amd64) asset="yt-dlp_linux" ;; \
|
||||
arm64) asset="yt-dlp_linux_aarch64" ;; \
|
||||
*) echo "Unsupported architecture: $TARGETARCH" >&2; exit 1 ;; \
|
||||
esac \
|
||||
&& cd /tmp \
|
||||
&& curl -fsSLO "https://github.com/yt-dlp/yt-dlp/releases/download/${YT_DLP_VERSION}/${asset}" \
|
||||
&& curl -fsSLO "https://github.com/yt-dlp/yt-dlp/releases/download/${YT_DLP_VERSION}/SHA2-256SUMS" \
|
||||
&& grep " ${asset}$" SHA2-256SUMS | sha256sum -c - \
|
||||
&& install -m 0755 "$asset" /usr/local/bin/yt-dlp \
|
||||
&& rm -f "$asset" SHA2-256SUMS \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /app
|
||||
COPY --from=build /out/api/ ./
|
||||
COPY --from=build /out/client/wwwroot/ ./wwwroot/
|
||||
|
||||
RUN mkdir -p /data/downloads \
|
||||
&& chown -R app:app /app /data/downloads
|
||||
|
||||
USER app
|
||||
ENV ASPNETCORE_URLS=http://+:8080 \
|
||||
ASPNETCORE_ENVIRONMENT=Production \
|
||||
YtDlp__ExecutablePath=/usr/local/bin/yt-dlp \
|
||||
YtDlp__FfmpegExecutablePath=/usr/bin/ffmpeg \
|
||||
Storage__DownloadsPath=/data/downloads
|
||||
|
||||
EXPOSE 8080
|
||||
ENTRYPOINT ["dotnet", "TuneRipper.Api.dll"]
|
||||
Reference in New Issue
Block a user