# Baron SSO Docker 컨테이너 역할 요약

본 문서는 Docker Desktop 화면에 보이는 Baron SSO 관련 컨테이너가 각각 어떤 역할을 하는지 간략히 정리한 문서입니다.

## 1. 한눈에 보는 구조

- `baron_*`: Baron SSO 애플리케이션 본체와 앱 전용 인프라
- `ory_*`: Ory 기반 인증/인가 스택
- `*-migrate-*`, `init-rp-*`, `*_check`, `*_init`: 초기화나 점검만 수행하고 끝나는 일회성 컨테이너

## 2. 앱/프론트/백엔드 계열

| 컨테이너 | 역할 | 비고 |
| --- | --- | --- |
| `baron_gateway` | 외부 브라우저 진입용 Nginx 게이트웨이 | `5000:5000`, 사용자 요청을 `userfront` 등 내부 서비스로 프록시 |
| `baron_backend` | Baron SSO 백엔드 API 서버 | Go/Fiber 기반, PostgreSQL/ClickHouse/Redis/Ory와 연동 |
| `baron_userfront` | 사용자용 메인 UI | Flutter 기반 사용자 화면 |
| `baron_adminfront` | 관리자용 웹 UI | React/Vite 기반, `5173:5173` |
| `baron_devfront` | 개발자/클라이언트 설정용 웹 UI | React/Vite 기반, `5174:5173` |
| `baron_orgfront` | 조직/시각화용 웹 UI | React/Vite 기반, `5175:5175` |

## 3. Baron 앱 전용 인프라

| 컨테이너 | 역할 | 비고 |
| --- | --- | --- |
| `baron_postgres` | Baron 앱 메인 데이터베이스 | 사용자/운영 데이터 저장, 호스트 포트는 `5433:5432` |
| `baron_clickhouse` | Baron 앱 감사 로그/분석 저장소 | 대용량 이벤트/감사 로그 적재 |
| `baron_redis` | 캐시 및 빠른 상태 저장소 | 세션성 데이터, 캐시, 보조 상태 저장 |
| `infra_check-1` | app stack 기동 전 인프라 존재 여부를 맞추는 더미 컨테이너 | 실제 서비스 로직 없음, compose 의존성 연결용 |

## 4. Ory 인증/인가 스택

| 컨테이너 | 역할 | 비고 |
| --- | --- | --- |
| `ory_postgres` | Ory 전용 PostgreSQL | Kratos/Hydra/Keto 메타데이터 저장 |
| `ory_clickhouse` | Ory/Oathkeeper 로그 저장소 | 접근 로그 및 보안 이벤트 적재 |
| `ory_kratos` | 사용자 인증/계정/셀프서비스 플로우 서버 | 로그인, 회원가입, 복구, 검증 등 담당 |
| `ory_hydra` | OAuth2/OIDC 서버 | 토큰 발급, client 관리, OIDC issuer 역할 |
| `ory_keto` | 권한 관계(authorization) 서버 | relation tuple 기반 권한 모델 처리 |
| `ory_oathkeeper` | 인증 프록시/정책 집행 게이트 | 외부 요청을 규칙에 따라 인증/인가 후 내부 서비스로 전달 |
| `ory_vector` | Oathkeeper/Ory 로그 수집 파이프라인 | 로그를 가공해 ClickHouse로 전달 |

## 5. 마이그레이션/초기화/헬스체크 컨테이너

이 그룹은 계속 떠 있는 서버가 아니라, 시작 시 필요한 작업만 수행하고 종료되는 컨테이너입니다. Docker 화면에서 `Exited (0)`이면 보통 정상 완료로 보면 됩니다.

| 컨테이너 | 역할 | 비고 |
| --- | --- | --- |
| `kratos-migrate-1` | Kratos DB 스키마 마이그레이션 | Ory Postgres 준비 후 실행 |
| `hydra-migrate-1` | Hydra DB 스키마 마이그레이션 | Ory Postgres 준비 후 실행 |
| `keto-migrate-1` | Keto DB 스키마 마이그레이션 | Ory Postgres 준비 후 실행 |
| `oathkeeper_logs_i...` | Oathkeeper 로그 디렉터리 초기화 | 로그 폴더 생성 및 권한 설정 |
| `ory_stack_check` | Ory 핵심 서비스 readiness 검사 | Kratos/Hydra/Keto 준비 완료 확인 |
| `init-rp-1` | Hydra OAuth client 자동 등록 | `adminfront`, `devfront`, `orgfront`, `oathkeeper-introspect` 생성 |

## 6. 화면을 볼 때 해석 방법

- 초록 점으로 계속 실행 중인 컨테이너: 실제 서비스를 제공하는 서버일 가능성이 큼
- 시작 버튼 모양 또는 `Exited (0)` 상태 컨테이너: 초기화/마이그레이션/체크 작업이 끝난 것일 가능성이 큼
- `baron_gateway`가 unhealthy이면 대개 뒤쪽 `baron_userfront` 또는 업스트림 서비스가 아직 준비되지 않았는지 먼저 확인하면 됨

## 7. 접속 기준 주소

- 사용자 메인 진입: `http://localhost:5000`
- 관리자 화면: `http://localhost:5173`
- 개발자 화면: `http://localhost:5174`
- 조직 화면: `http://localhost:5175`
- Oathkeeper 프록시 포트: `http://localhost:4457`

## 8. 요약

이 Docker 화면은 크게 세 층으로 보면 됩니다.

- Baron 앱 계층: `baron_backend`, `baron_userfront`, `baron_adminfront`, `baron_devfront`, `baron_orgfront`, `baron_gateway`
- Baron/Ory 인프라 계층: `baron_postgres`, `baron_clickhouse`, `baron_redis`, `ory_postgres`, `ory_clickhouse`
- 인증/인가 계층: `ory_kratos`, `ory_hydra`, `ory_keto`, `ory_oathkeeper`, `ory_vector`

즉, 사용자는 `baron_gateway`로 들어오고, 실제 인증은 Ory stack이 담당하며, Baron 앱은 그 위에서 비즈니스 기능과 관리 화면을 제공하는 구조입니다.