#!/bin/bash # RAG 서비스 - API 서버와 Event Hub Consumer 동시 실행 스크립트 set -e # 에러 발생 시 스크립트 종료 echo "==========================================" echo "RAG 서비스 시작" echo "==========================================" # 로그 디렉토리 생성 mkdir -p logs # Event Hub Consumer를 백그라운드로 실행 echo "[1/2] Event Hub Consumer 시작..." python start_consumer.py > logs/consumer.log 2>&1 & CONSUMER_PID=$! echo "Consumer PID: $CONSUMER_PID" # API 서버 시작 (포그라운드) echo "[2/2] REST API 서버 시작..." python -m uvicorn src.api.main:app --host 0.0.0.0 --port 8000 & API_PID=$! echo "API Server PID: $API_PID" # PID 파일 저장 echo $CONSUMER_PID > logs/consumer.pid echo $API_PID > logs/api.pid echo "==========================================" echo "RAG 서비스 시작 완료" echo " - API Server: http://0.0.0.0:8000" echo " - Consumer PID: $CONSUMER_PID" echo " - API PID: $API_PID" echo "==========================================" # 종료 시그널 처리 (graceful shutdown) trap "echo 'Shutting down...'; kill $CONSUMER_PID $API_PID; exit 0" SIGTERM SIGINT # 두 프로세스 모두 실행 중인지 모니터링 while kill -0 $CONSUMER_PID 2>/dev/null && kill -0 $API_PID 2>/dev/null; do sleep 5 done # 하나라도 종료되면 모두 종료 echo "One of the processes stopped. Shutting down all..." kill $CONSUMER_PID $API_PID 2>/dev/null || true wait