본문으로 건너뛰기

Docker Compose

컨테이너 구성, 이벤트 처리 흐름, 기동 의존 순서, 오브젝트 스토리지 레이아웃을 다룬다.


컨테이너 구성

컨테이너역할포트
API 서버REST API 서버. Core/Enterprise 모두 docker-compose 서비스 키는 rag-api로 같고, 실제 컨테이너 이름(container_name)만 Enterprise에서 rag-ent-api로 다르다8000
rag-admin관리 콘솔(nginx)8080
postgresqlPostgres 15 — 메타데이터 + Dagster 상태 저장소5432
redisRedis 7 — 이벤트 큐. Enterprise는 역할 캐시·rate limit 카운터도 같은 Redis를 겸용6379
qdrantQdrant v1.18 — 벡터 DB6333 / 6334
minioMinIO — 오브젝트 스토리지9000 / 9001(콘솔)
minio-init버킷 초기화(일회성)
dagster-rag-apigRPC 코드 서버(definitions 로드)4000
dagster-webserverDagster UI3000
dagster-daemon센서·스케줄 실행 프로세스
mailpit [ENT]초대·역할 부여 메일을 가두는 로컬 SMTP 서버. 운영 배포에는 사용하지 않는다8025(Web UI) / 1025(SMTP)

이벤트 처리 흐름

queue_worker.enabled: false(기본값)일 때 Dagster가 이벤트를 처리하는 경로다.

API call (file upload / document delete / connector sync)
-> API server: enqueue_upload_event / enqueue_delete_event
-> Redis queue (rag:upload:queue / rag:delete:queue)
-> event_queue_sensor (dagster-daemon, 30s tick)
-> ingest_job / delete_job

queue_worker.enabled: true로 바꾸면 Dagster 없이 API 서버 내장 워커가 큐를 직접 처리한다 — 이 경우 Dagster 센서는 동작하지 않는다.

기동 의존 순서

postgresql ─┐
redis ───────┼─(all healthy)─→ API server ─→ rag-admin
qdrant ──────┤ └─→ minio-init (+ minio healthy)
minio ───────┘

postgresql ─(healthy)─→ dagster-rag-api ─→ dagster-webserver
└─→ dagster-daemon

Enterprise는 API 서버가 mailpit(healthy)도 함께 기다린 뒤에 기동한다.

오브젝트 스토리지 레이아웃

source_typestorage_key 형식예시
s3 (파일 업로드){kb_id}/{filename}kb-01/report.pdf
web (크롤러){kb_id}/web/{doc_id}.htmlkb-01/web/a1b2c3-….html
confluence{kb_id}/confluence/{doc_id}.mdkb-01/confluence/a1b2c3-….md
github{kb_id}/github/{doc_id}.{ext}kb-01/github/a1b2c3-….md

MinIO CLI로 오브젝트 확인:

docker exec minio mc alias set local http://localhost:9000 <user> <password>
docker exec minio mc ls local/rag-api/kb-01/
docker exec minio mc stat local/rag-api/kb-01/report.pdf

버킷 이름 rag-apis3.rag_bucket(Configuration §2 s3 참고) 설정값으로, Enterprise 배포에서도 기본값을 그대로 쓰면 동일하다.