feat(frank-tts-engine): Qwen-TTS as a boot-persistent endpoint, plus the three silent faults auditing it found #14
@@ -110,7 +110,16 @@ RUN apt-get update -qq \
|
|||||||
# Same unprivileged uid as the frank-tts façade (10000): the voice packs and the
|
# Same unprivileged uid as the frank-tts façade (10000): the voice packs and the
|
||||||
# model directory are host state mounted read-only, and one uid across the pair
|
# model directory are host state mounted read-only, and one uid across the pair
|
||||||
# means one thing to remember about what is world-readable.
|
# means one thing to remember about what is world-readable.
|
||||||
RUN adduser --system --uid 10000 --home /app --shell /usr/sbin/nologin tts
|
#
|
||||||
|
# `useradd`, NOT `adduser`: this trimmed ubuntu:24.04 base ships no `adduser` at
|
||||||
|
# all (verified 2026-10-18 against this digest — `adduser` is absent from the
|
||||||
|
# base and is not pulled in by ca-certificates/curl/libgomp1 either), so an
|
||||||
|
# `adduser` line dies at image-build time with crun's "executable file `adduser`
|
||||||
|
# not found in $PATH". `useradd --system --uid 10000` succeeds and prints one
|
||||||
|
# cosmetic warning (`uid 10000 is greater than SYS_UID_MAX 999`); the uid is the
|
||||||
|
# point, and it is what matches the façade. The alpine façade Containerfile keeps
|
||||||
|
# its own busybox `adduser -D -u 10000` — different base, different tool, same uid.
|
||||||
|
RUN useradd --system --uid 10000 --home-dir /app --shell /usr/sbin/nologin tts
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY --from=build /src/build/tts-server /src/build/*.so* /app/
|
COPY --from=build /src/build/tts-server /src/build/*.so* /app/
|
||||||
|
|||||||
Reference in new issue
Block a user