2.0 KiB
2.0 KiB
Docker 배포 (N2-B) — msn.iykyka.com
체크리스트: deploy-checklist.md N2-B.
결정: N2-A (Postgres, AI 내부망, Web 우선, 시크릿 env, ALLOW_DEMO_INVITE=1).
구성
| 서비스 | 역할 | 호스트 노출 |
|---|---|---|
postgres |
PostgreSQL 16 | 아니오 (볼륨 ykavu_pgdata) |
ai-service |
FastAPI draft/escalate | 아니오 |
core-backend |
Go API + WS | 아니오 (web nginx가 프록시) |
web |
Flutter web + nginx | WEB_HOST_PORT→80 (기본 8088) |
엣지(Caddy/Traefik/기존 프록시)는 web:80만 https://msn.iykyka.com에 연결하면 된다.
로컬 / 서버
cp .env.example .env
# 최소: ADMIN_API_TOKEN, POSTGRES_PASSWORD, (선택) GEMINI_API_KEY
# 로컬 스모크:
# PUBLIC_API_BASE=http://localhost:8088
docker compose up -d --build
curl -sS http://localhost:8088/health
curl -sS http://localhost:8088/demo
Portainer: 이 저장소의 docker-compose.yml + 스택 env로 동일하게 Up.
시크릿
- git에
.env커밋 금지 (AGENTS.md/ N2-A5) - Portainer/호스트에
ADMIN_API_TOKEN,POSTGRES_PASSWORD,GEMINI_API_KEY설정
컷오버 메모 (N2-B11)
- 새 스택을 임시 포트 또는 스테이징로 Up → 스모크
- 기존 Node MSN 중지
- 리버스 프록시를
web:80으로 전환 - 롤백: 프록시를 구 MSN으로 되돌리고 스택 stop
검증 메모 (2026-07-31)
docker compose build:ai-service,core-backend이미지 빌드 OKmobile/Dockerfile.prebuilt+nginx -tOK (API upstream 지연 해석)- 일부 샌드박스/에이전트 VM에서는 Docker bridge 네트워크 TCP가 막혀
컨테이너 간
postgres:5432연결이 타임아웃될 수 있음. Portainer가 돌아가는 실제 호스트에서는 기본 bridge compose를 사용하면 된다. - Flutter multi-stage (
mobile/Dockerfile)는 이미지 용량이 크므로 Portainer 빌드 시 시간 여유를 둔다. 급하면 호스트에서flutter build web후Dockerfile.prebuilt.