build: install ffmpeg and gosu as binaries instead of apt packages

Setting the service up on a new host took 20 to 30 minutes, spent almost
entirely in the Debian ffmpeg dependency chain: several hundred packages
of X11 and desktop libraries that dpkg unpacks and configures file by
file onto an SD card. That cost is paid again on every fresh machine and
turned moving the service into a half-hour commitment rather than a
routine step.

Prebuilt binaries remove the package manager from the build entirely. A
cold build with nothing cached now finishes in about four minutes on Pi
hardware, verified end to end including audio transcoding.

Pinning the dependency versions is unrelated to build speed. It prevents
a rebuild months from now from silently resolving versions other than
those the running container was tested with.
This commit is contained in:
Andre
2026-08-14 16:20:49 +02:00
parent 2ab62ba122
commit 790c744217
2 changed files with 31 additions and 28 deletions
+15 -12
View File
@@ -1,12 +1,15 @@
fastapi>=0.115
uvicorn>=0.30
pydantic>=2.9
pydantic-settings>=2.5
httpx>=0.27
python-multipart>=0.0.18
recipe-scrapers>=15.0
beautifulsoup4>=4.12
lxml>=5.2
openai>=1.50
python-dotenv>=1.0
aiofiles>=23.0
# Pinned to the versions verified on the Pi. Bump deliberately, not implicitly:
# an unpinned rebuild months later resolves different versions than the running
# container and breaks in ways the diff cannot explain.
fastapi==0.139.2
uvicorn==0.51.0
pydantic==2.13.4
pydantic-settings==2.14.2
httpx==0.28.1
python-multipart==0.0.32
recipe-scrapers==15.11.0
beautifulsoup4==4.15.0
lxml==6.1.1
openai==2.46.0
python-dotenv==1.2.2
aiofiles==25.1.0