Repository navigation
Expand file tree
/
Copy pathDockerfile.api-base
More file actions
29 lines (28 loc) · 1.65 KB
/
Copy pathDockerfile.api-base
File metadata and controls
29 lines (28 loc) · 1.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Base image for the MusicHoarder API container.
#
# Aspire builds the API image via the .NET SDK container target (`dotnet publish -t:PublishContainer`),
# which can't run apt. So we bake the runtime dependencies into this base and point the API project
# at it via <ContainerBaseImage>. CI builds + pushes this to GHCR before `aspire do push`.
#
# Contents beyond the stock aspnet runtime:
# - libchromaprint-tools → provides `fpcalc` for acoustic fingerprinting (AcoustID).
# - ffmpeg → audio extraction/remux for the wishlist yt-dlp downloader.
# - yt-dlp (self-contained PyInstaller build) → fetches wishlist tracks from YouTube.
# - deno → JS runtime yt-dlp REQUIRES to solve YouTube's player challenge
# ("No supported JavaScript runtime could be found" → ERROR otherwise).
# yt-dlp auto-detects it on PATH. Keep in sync with ./Dockerfile (preview).
# - curl / unzip → container healthchecks + fetching the yt-dlp & deno binaries.
FROM mcr.microsoft.com/dotnet/aspnet:10.0
RUN apt-get update && apt-get install -y --no-install-recommends \
libchromaprint-tools \
ffmpeg \
curl \
unzip \
ca-certificates \
&& curl -fsSL https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux -o /usr/local/bin/yt-dlp \
&& chmod a+rx /usr/local/bin/yt-dlp \
&& curl -fsSL https://github.com/denoland/deno/releases/latest/download/deno-x86_64-unknown-linux-gnu.zip -o /tmp/deno.zip \
&& unzip -o /tmp/deno.zip -d /usr/local/bin \
&& chmod a+rx /usr/local/bin/deno \
&& rm -f /tmp/deno.zip \
&& rm -rf /var/lib/apt/lists/*