Files
TuneRipper/Dockerfile
T

51 lines
1.8 KiB
Docker

# 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-noble 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"]