kpaa / docker-compose.yml
scvcoder's picture
Cleanup: dead code, route deletion (/info, /chat, /api/*), comment polish, auth mode docs, URL rename
9344f01 verified
# KPAA all-in-one — backend(=FastAPI + llama-cpp-python 임베드) + Open WebUI.
# 외부 추론 데몬·서비스 없는 단일 프로세스 구성.
#
# 사용:
# cp .env.example .env # LAW_OC=... 입력
# docker compose up -d
# # → http://localhost:3000 (Open WebUI)
#
# 첫 실행 시 backend 컨테이너가 Gemma 4 E2B GGUF (~3.2GB)을 자동으로
# `kpaa-models` 볼륨에 받음. 5~15분 소요. `docker compose logs -f backend` 로 진행 확인.
services:
backend:
build:
context: .
dockerfile: Dockerfile
image: kpaa-backend:latest
restart: unless-stopped
environment:
- LAW_OC=${LAW_OC:-}
- KPAA_HOST=0.0.0.0
- KPAA_PORT=8000
# GPU offload 는 *자동 감지*. 강제 override 시 host shell 에서 export:
# KPAA_N_GPU_LAYERS=-1 docker compose up
- KPAA_N_GPU_LAYERS=${KPAA_N_GPU_LAYERS:-}
volumes:
- kpaa-models:/root/.cache/kpaa # 모델 + 법제처 캐시 영속화
ports:
- "8000:8000"
healthcheck:
test: ["CMD", "curl", "-fsS", "http://127.0.0.1:8000/healthz"]
interval: 30s
timeout: 5s
retries: 5
start_period: 60s # 첫 모델 로드까지 시간 여유
open-webui:
image: ghcr.io/open-webui/open-webui:main
restart: unless-stopped
depends_on:
backend:
condition: service_started
environment:
# backend의 OpenAI-호환 endpoint를 미리 주입 — UI에서 별도 설정 불필요
- OPENAI_API_BASE_URLS=http://backend:8000/v1
- OPENAI_API_KEYS=local
- WEBUI_NAME=KPAA 개인정보보호법 상담
# 백엔드 default preset(`gemma-4-e2b-q4`) 과 동일. dropdown 에서
# 다른 프리셋을 고르면 백엔드 ModelManager 가 자동 전환.
- DEFAULT_MODELS=개인정보 상담 AI(gemma-4-e2b-q4)
# OpenWebUI 의 Ollama 자동 감지 차단 — KPAA backend(:8000) 만 사용.
- ENABLE_OLLAMA_API=false
- DEFAULT_USER_ROLE=admin
volumes:
- open-webui-data:/app/backend/data
ports:
- "3000:8080"
volumes:
kpaa-models:
open-webui-data: