kpaa / Dockerfile.ui
scvcoder's picture
Cleanup: dead code, route deletion (/info, /chat, /api/*), comment polish, auth mode docs, URL rename
9344f01 verified
# KPAA UI Space — Open WebUI pointing to KPAA Backend Space.
#
# Open WebUI 공식 이미지를 그대로 쓰되 HF Spaces 정책(UID 1000 + writable /app)에
# 맞추기 위해 chown + 필수 env 추가.
FROM ghcr.io/open-webui/open-webui:main
# ─── Backend wiring ──────────────────────────────────────────────────────
ENV OPENAI_API_BASE_URLS="https://scvcoder-kpaa.hf.space/v1"
ENV OPENAI_API_KEYS="hf-spaces-internal"
ENV ENABLE_OLLAMA_API=false
ENV WEBUI_NAME="KPAA — 개인정보보호법 상담"
# 백엔드의 default preset (`gemma-4-e2b-q4`) 과 동일해야 Open WebUI 자동 선택.
# 사용자가 dropdown 에서 다른 프리셋을 고르면 백엔드의 ModelManager 가 자동 전환.
ENV DEFAULT_MODELS="개인정보 상담 AI(gemma-4-e2b-q4)"
ENV WEBUI_AUTH=false
# ─── HF Spaces / UID 1000 권한 정리 ───────────────────────────────────────
USER root
RUN chown -R 1000:1000 /app && \
mkdir -p /tmp/openwebui-data && \
chown -R 1000:1000 /tmp/openwebui-data
ENV DATA_DIR=/tmp/openwebui-data
# ─── Inject route-change postMessage script into Open WebUI HTML ─────────
# Cross-origin iframe 정책상 부모 창은 자식의 URL 변경을 감지할 수 없다.
# Open WebUI HTML 에 작은 polling 스크립트를 주입해서 location.pathname
# 변경 시 부모 창에 postMessage 로 알린다. 백엔드 Space 의 split HTML 이
# 이 메시지를 받으면 우측 참고자료를 자동 초기화.
RUN sh -c "for f in /app/build/index.html /app/backend/open_webui/static/index.html; do \
if [ -f \"\$f\" ]; then \
sed -i 's|</body>|<script>console.log(\"[kpaa] injected script loaded\");(function(){var _kp;function emit(){var p=location.pathname;if(p!==_kp){_kp=p;console.log(\"[kpaa] route change:\",p);try{window.parent.postMessage({type:\"kpaa-route\",path:p},\"*\");}catch(e){console.log(\"[kpaa] postMessage failed\",e);}}}var _origPush=history.pushState,_origRep=history.replaceState;history.pushState=function(){_origPush.apply(this,arguments);emit();};history.replaceState=function(){_origRep.apply(this,arguments);emit();};window.addEventListener(\"popstate\",emit);setInterval(emit,500);emit();})();</script></body>|' \"\$f\"; \
echo \"injected into: \$f\"; \
fi; \
done"
USER 1000
# Open WebUI listens on 8080 by default.
ENV PORT=8080
EXPOSE 8080