kb-demo / Dockerfile
RayLi-Git
demo: 關閉強制 2FA(FEATURE_2FA=false + 前端尊重旗標)
8bba3cc
Raw
History Blame Contribute Delete
2.21 kB
# 知識庫系統 V5 — 公開示範映像(Hugging Face Spaces / Docker)
# ⚠ 此為「示範」用:預設不帶雲端 AI 金鑰、容器啟動自動 seed 假資料、資料為臨時(重啟即重置)。
# 請勿放真實公司資料;要加雲端 AI 請用「有額度上限」的測試金鑰(見 README)。
FROM python:3.11-slim-bookworm
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates curl \
&& rm -rf /var/lib/apt/lists/*
# 非 root 使用者(uid 1000;HF Spaces 慣例,容器以此身分執行)
RUN useradd -m -u 1000 kb
WORKDIR /app
# 先裝 Python 依賴(利用 layer cache)
COPY --chown=kb:kb backend/requirements.txt ./backend/requirements.txt
RUN pip install --no-cache-dir -r backend/requirements.txt
# 複製程式(不含真實 vault / DB,那些由 seed 產生)
COPY --chown=kb:kb backend/ ./backend/
COPY --chown=kb:kb static/ ./static/
COPY --chown=kb:kb scripts/ ./scripts/
COPY --chown=kb:kb 知識庫視覺圖最終版.html ./
COPY --chown=kb:kb entrypoint.sh ./entrypoint.sh
# 臨時資料夾(DB / vault / history)——示範用,重啟即重置
RUN mkdir -p /app/vault /app/data/sys/history /home/kb/.cache && \
chmod +x /app/entrypoint.sh && \
chown -R kb:kb /app /home/kb
USER 1000
WORKDIR /app/backend
ENV HOME=/home/kb \
PYTHONPATH=/app/backend \
PYTHONUNBUFFERED=1 \
KBV5_DB=/app/data/kbv5.db \
KBV5_VAULT_DIR=/app/vault \
KBV5_HISTORY_DIR=/app/data/sys/history \
KBV5_VARIANT_DICT=/app/backend/variant_dictionary.json \
KBV5_ENV=dev \
KBV5_SEED=1 \
FEATURE_2FA=false \
PORT=7860 \
JWT_SECRET=demo-only-fixed-secret-change-me-0123456789abcdef
# ↑ 示範用固定密鑰(資料為假、低風險)。要更安全可在 Space Secrets 覆寫 JWT_SECRET。
# 不設 AI 金鑰 → 系統自動走「本地保底整理」,任何人都無法用你的金鑰產生費用。
EXPOSE 7860
# HF Spaces 會依 README 的 app_port (7860) 對外;容器內 uvicorn 也聽 7860
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \
CMD curl -fsS http://127.0.0.1:7860/api/health || exit 1
CMD ["/app/entrypoint.sh"]