File size: 2,133 Bytes
9344f01 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | # 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:
|