8월 7일까지 워킹트리에만 남아 있던 미커밋 작업을 커밋한다. 여러 사본 폴더(worktree·clone)에 흩어져 있던 중간 스냅샷을 정리하기 전에 원본을 git 이력으로 고정하는 것이 목적이다. - contracts/routes/services: measurement, outcome_trajectory, rupture_repair, deliberate_practice, calibration_transfer, supervision_research, multimodal_alliance, continuous_improvement 계열 신규 모듈과 테스트 - infra/db/init: 07~16 마이그레이션(측정 기반~calibration transfer 실행) - apps/web: 세션 리뷰 카드·관리 화면·E2E 스펙 추가 - docs/ops: G0~G8 라이브 통합·배포·롤백 증거 문서와 evidence JSON/PNG - scripts: smoke·ledger·릴리스 에이전트·NAS 프리뷰 운영 스크립트 engine.public 로그 .bak과 apps/web/test-results 산출물은 커밋에서 제외했다.
24 lines
1 KiB
Docker
24 lines
1 KiB
Docker
# 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
|
|
|
|
ARG INSTALL_RAG=false
|
|
|
|
# 의존성 레이어 분리(캐시 효율). 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 로 주입(이미지에 굽지 않음 = 이식성)
|
|
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--ws", "websockets", "--ws-max-queue", "4"]
|