2.2 KiB
Deployment
Versioning rule
- The version number recorded in this file (i.e. checked into git) is the current online version — the version of the latest published Docker image.
- When any changes are made, the new Docker image version must bump the minor number of the latest git version (e.g. latest is
1.9→ new image is1.10). - Whenever a new image is built and pushed, update the commands below in the same commit, so the checked-in version always matches the published image.
Publishing (automated)
Use publish.sh — it reads the current version from this file, bumps the minor, updates this file, builds the image with the version build-arg and pushes it:
./publish.sh # bump minor of the current version (e.g. 1.10 -> 1.11)
./publish.sh 2.0 # publish an explicit version instead
Cross-building
The dev machine is an Apple Silicon Mac (arm64) while the target server is
Ubuntu 22.04 x86_64, so images are cross-built with docker buildx for
linux/amd64 and pushed straight to the registry (--push). Requires a
buildx builder with amd64 support (OrbStack / Docker Desktop provide one by
default, e.g. via QEMU emulation).
Private yt-dlp build
Until upstream yt-dlp fixes the extractor bug, the image bakes a wheel built from a local patched checkout instead of the pinned PyPI release:
./build-ytdlp.shbuilds the wheel from~/Dev/github/yt-dlp(override the path withYTDLP_REPO=...) intovendor/yt_dlp-*.whl.- The Dockerfile force-reinstalls that wheel over the version pinned in
uv.lockwhen the wheel is present; otherwise it silently falls back to the pinned release. - The wheel is git-ignored, so it is not committed.
publish.shruns./build-ytdlp.shautomatically and aborts if the local checkout is missing.
See YTDLP_PRIVATE_BUILD.md for full details, including a step-by-step
guide to switching back to the official build once the upstream fix lands.
Build & push (manual)
# Optional: stage the private yt-dlp wheel (see "Private yt-dlp build")
./build-ytdlp.sh
docker buildx build --platform linux/amd64 \
--build-arg VERSION=1.22 \
-t 192.168.2.212:3000/tigeren/metube:1.22 \
--push .
Run
docker compose up -d --build --force-recreate