🏆45

Challenge: Docker 배포 완성 & 통합 테스트 통과

Docker 배포 & 테스트

Challenge: 배포 완성

최종 확인 시나리오

# 1. 클린 시작
docker compose down -v
docker compose up --build -d

# 2. 헬스체크 대기 (30초)
sleep 30

# 3. 데이터 시드 -- 테스트보다 먼저다
python scripts/seed_data.py

# 4. 앱 재시작 (시드한 문서를 인덱싱하도록)
docker compose restart app

# 5. 통합 테스트
python tests/test_integration.py

# 6. 브라우저 확인
open http://localhost:8501    # Streamlit
open http://localhost:7474    # Neo4j

# 7. 채팅 테스트
# Chat 페이지에서 질문하여 정상 응답 확인

# 8. 폴백 확인
docker compose stop neo4j
# Chat 에서 문서 질문은 그대로 답하고, KG 질문은 안내로 넘어가야 한다
docker compose start neo4j

# 9. 종료
docker compose down

시드를 나중에 하면 안 되는 이유가 있다. core/bootstrap.py@st.cache_resource 안에서 기동할 때 한 번만 rag.load_documents() 를 부른다. 앱이 뜬 뒤에 문서를 넣으면 그 문서들은 인덱싱되지 않고, 채팅 테스트가 "관련 문서를 찾을 수 없습니다"를 뱉는다. KG 도 마찬가지여서 시드 전에 통합 테스트를 돌리면 노드 수 검사가 실패한다.

제출물

  1. Dockerfile
  2. docker-compose.yml
  3. .dockerignore
  4. 통합 테스트 결과 스크린샷
  5. 브라우저 동작 스크린샷 (Chat, KG)
요구사항

docker compose up --build -d로 전체 시스템 실행

Streamlit 앱 (http://localhost:8501) 접근 가능

Neo4j 브라우저 (http://localhost:7474) 접근 가능

샘플 데이터 시드를 통합 테스트보다 먼저 실행할 것

샘플 데이터 시드 완료 (문서 3개 + KG 노드)

통합 테스트 (test_integration.py) 에서 FAIL 0건, SKIP 이 남았다면 그 이유를 적을 것

docker compose down -v 후 재실행해도 정상 동작

Neo4j 를 정지한 상태에서 문서 질문이 정상 응답하고 KG 질문이 안내로 폴백되는 것을 확인할 것

평가 기준
  • 한 줄 명령어로 전체 시스템이 기동되는가
  • 서비스 간 통신이 정상인가 (앱 <-> Neo4j)
  • 데이터 영속성이 보장되는가 (Volume)
  • 통합 테스트가 모두 통과하는가
  • 에러 상황에서 적절한 로그가 출력되는가
보너스
  • multi-stage build로 이미지 크기 최적화
  • docker compose --profile로 개발/프로덕션 분리
  • README.md에 실행 가이드 작성
AI로 학습하기 — 꿀팁
Docker 배포 통합 테스트 체크리스트AI 학습 팁

AI에게 제조 AI 어시스턴트 Docker 배포의 통합 테스트 시나리오와 롤백 절차를 체계적으로 준비받으세요.

제조 AI 어시스턴트 Docker 배포를 완성하고 통합 테스트를 준비 중이다. 다음을 포함한 테스트 체크리스트를 만들어줘: (1) 컨테이너 기동 순서와 헬스체크 통과 여부, (2) RAG 파이프라인 엔드투엔드 응답 정확도 검증 쿼리 5개, (3) Neo4j KG 쿼리 응답 시간 기준, (4) 컨테이너 재시작 후 데이터 영속성 확인, (5) 배포 실패 시 이전 버전으로 롤백하는 절차.
이 팁이 도움이 됐나요?
용어