음성 재생과 운영 배포 정리

This commit is contained in:
Yun Chan 2026-06-28 12:18:20 +09:00
parent 8ed185ce6c
commit ac7db95542
1020 changed files with 46863 additions and 2175 deletions

View file

@ -1,13 +1,23 @@
# Vignette API (FastAPI) — 이식 가능한 슬림 이미지
# Vignette API (FastAPI) - 이식 가능한 슬림 이미지
# 빌드 컨텍스트는 저장소 루트여야 한다: docker build -f apps/api/Dockerfile .
FROM python:3.11-slim AS base
ENV PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1 PIP_NO_CACHE_DIR=1
WORKDIR /app
# 의존성 레이어 분리(캐시 효율)
COPY requirements.txt ./
RUN pip install -r requirements.txt
ARG INSTALL_RAG=false
COPY . .
# 의존성 레이어 분리(캐시 효율). RAG 의존성은 torch/model 포함이라 명시 opt-in.
COPY apps/api/requirements.txt apps/api/requirements-rag.txt ./apps/api/
RUN pip install -r apps/api/requirements.txt \
&& if [ "$INSTALL_RAG" = "true" ]; then pip install -r apps/api/requirements-rag.txt; fi
# 코드가 저장소 루트(/app)를 기준으로 data/personas 등을 찾으므로 루트 형태를 유지한다.
COPY apps/api ./apps/api
COPY data ./data
RUN mkdir -p /app/uploads
ENV PYTHONPATH=/app/apps/api
WORKDIR /app/apps/api
EXPOSE 8000
# 엔진/DB/음성 엔드포인트는 전부 env 로 주입(이미지에 굽지 않음 = 이식성)