🏆45분
Challenge: Docker 배포 완성 & 통합 테스트 통과
Docker 배포 & 테스트
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 도 마찬가지여서 시드 전에 통합 테스트를 돌리면 노드 수 검사가 실패한다.
제출물
- Dockerfile
- docker-compose.yml
- .dockerignore
- 통합 테스트 결과 스크린샷
- 브라우저 동작 스크린샷 (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) 배포 실패 시 이전 버전으로 롤백하는 절차.
이 팁이 도움이 됐나요?