mirror of
https://github.com/jamiepine/voicebox.git
synced 2026-10-03 17:15:19 -07:00
Docker creates /home/voicebox/.cache (parent of the huggingface-cache volume mountpoint) owned by root on every container create, and a fresh named volume is root-owned too. The app runs as the voicebox user (uid 999), so anything that writes a cache outside the HF mount (torch hub, spacy, ...) fails with Permission denied. The entrypoint already runs as root before dropping privileges via gosu — create/chown the cache dirs there (non-recursive, instant). Co-Authored-By: Claude Fable 5 <[email protected]>
22 lines
813 B
Bash
22 lines
813 B
Bash
#!/bin/sh
|
|
set -e
|
|
# Join whatever groups own the mounted GPU nodes so /dev/kfd and /dev/dri work
|
|
# on any host (no RENDER_GID/VIDEO_GID needed), then drop to the app user.
|
|
for dev in /dev/kfd /dev/dri/render*; do
|
|
[ -e "$dev" ] || continue
|
|
gid=$(stat -c %g "$dev")
|
|
grp=$(getent group "$gid" | cut -d: -f1)
|
|
[ -n "$grp" ] || {
|
|
grp="gpu$gid"
|
|
groupadd -g "$gid" "$grp"
|
|
}
|
|
usermod -aG "$grp" voicebox
|
|
done
|
|
# Docker creates the HF volume mountpoint's parent (~/.cache) as root on every
|
|
# container create, and a fresh volume is root-owned too — without this the app
|
|
# user can't write any cache (torch, spacy) outside the HF mount.
|
|
mkdir -p /home/voicebox/.cache/huggingface
|
|
chown voicebox:voicebox /home/voicebox/.cache /home/voicebox/.cache/huggingface
|
|
|
|
exec gosu voicebox "$@"
|