wrolpi/docker/llm/Dockerfile
Roland 318b835faf
ai: package llama-server for all three deployments, with idle unload
install_llama_cpp.sh builds llama-server from the SHA-pinned v0.3.0
source tarball (single source of truth: on-device upgrade, Pi image,
Live ISO, and the new docker/llm container all call it; version-marker
makes re-runs no-ops).  start_llama_server.sh refuses to start unless
ai.yaml enables AI and the active model file exists — which also covers
unmounted media.  wrolpi-llm.service is installed but deliberately
never enabled at boot: the Controller starts it on demand (registered
in managed_services; the llm compose service follows the samba
pattern), and the API's perpetual idle-unload worker asks the
Controller to stop it after the configured idle minutes.  llama-server
is localhost-only natively, internal-network-only in docker, and never
proxied by Caddy.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-13 20:10:16 -06:00

17 lines
703 B
Docker

FROM debian:13
ENV DOCKER=true
RUN apt-get update && apt-get install -y curl ca-certificates
# Build llama-server from the pinned release (single source of truth with native installs).
COPY wrolpi/scripts/install_llama_cpp.sh /tmp/install_llama_cpp.sh
RUN /tmp/install_llama_cpp.sh && rm /tmp/install_llama_cpp.sh \
&& apt-get remove -y build-essential cmake && apt-get autoremove -y && apt-get clean
# The same startup scripts the native install uses.
COPY scripts/start_llama_server.sh /opt/wrolpi/scripts/start_llama_server.sh
COPY wrolpi/scripts/read_config_value.sh /opt/wrolpi/wrolpi/scripts/read_config_value.sh
COPY docker/llm/entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]