diff --git a/docker/Dockerfile.non_root b/docker/Dockerfile.non_root index 2729babb6d6..ed84e573de4 100644 --- a/docker/Dockerfile.non_root +++ b/docker/Dockerfile.non_root @@ -55,12 +55,18 @@ COPY . . # Set non-root flag for build time consistency ENV LITELLM_NON_ROOT=true -# Stage the pre-built Admin UI from the checked-in Next.js static export. -# _experimental/out/ is regenerated as part of the release runbook. -# Restructure extensionless routes (foo.html -> foo/index.html) to match the layout -# proxy_server.py expects, and drop a readiness marker. +# Build the Next.js Admin UI from source. +# nodejs + npm are already installed in this stage (see apk add above). +RUN --mount=type=cache,target=/root/.npm,id=litellm-npm-cache \ + cd /app/ui/litellm-dashboard && \ + NEXT_TELEMETRY_DISABLED=1 npm_config_fund=false npm_config_audit=false \ + npm ci --prefer-offline && \ + NEXT_TELEMETRY_DISABLED=1 npm run build + +# Stage the built UI and restructure extensionless routes +# (foo.html -> foo/index.html) to match the layout proxy_server.py expects. RUN mkdir -p /var/lib/litellm/ui /var/lib/litellm/assets && \ - cp -r /app/litellm/proxy/_experimental/out/. /var/lib/litellm/ui/ && \ + cp -r /app/ui/litellm-dashboard/out/. /var/lib/litellm/ui/ && \ cp /app/litellm/proxy/logo.jpg /var/lib/litellm/assets/logo.jpg && \ ( cd /var/lib/litellm/ui && \ for html_file in *.html; do \