164 lines
5.6 KiB
Bash
164 lines
5.6 KiB
Bash
#!/bin/bash
|
|
|
|
echo "============================================"
|
|
echo "WACE 솔루션 - 전체 서비스 시작 (분리형) - Linux"
|
|
echo "============================================"
|
|
|
|
echo ""
|
|
echo "최신 코드 가져오기..."
|
|
echo ""
|
|
git pull origin main || {
|
|
echo "Git pull 실패. 계속 진행합니다..."
|
|
}
|
|
|
|
echo ""
|
|
echo "백엔드(Spring Boot)와 프론트엔드를 순차적으로 시작합니다..."
|
|
echo ""
|
|
|
|
# 시스템 정보 출력
|
|
echo "시스템 정보:"
|
|
echo " OS: $(uname -s)"
|
|
echo " Architecture: $(uname -m)"
|
|
echo " Kernel: $(uname -r)"
|
|
echo ""
|
|
|
|
# Docker 및 Docker Compose 버전 확인
|
|
echo "Docker 환경 확인:"
|
|
docker --version 2>/dev/null || echo " Docker가 설치되지 않았습니다."
|
|
docker-compose --version 2>/dev/null || echo " Docker Compose가 설치되지 않았습니다."
|
|
echo ""
|
|
|
|
# 기존 컨테이너 정리
|
|
echo "============================================"
|
|
echo "0. 기존 서비스 정리 중..."
|
|
echo "============================================"
|
|
|
|
docker-compose -f docker/prod/docker-compose.backend.prod.yml down -v 2>/dev/null || true
|
|
docker-compose -f docker/prod/docker-compose.frontend.prod.yml down -v 2>/dev/null || true
|
|
|
|
echo "사용하지 않는 Docker 이미지 정리 중..."
|
|
docker image prune -f 2>/dev/null || true
|
|
|
|
# 백엔드 먼저 시작
|
|
echo ""
|
|
echo "============================================"
|
|
echo "1. 백엔드(Spring Boot) 서비스 시작 중..."
|
|
echo "============================================"
|
|
|
|
# 네트워크 생성 (존재하지 않는 경우)
|
|
docker network create pms-network 2>/dev/null || echo "네트워크가 이미 존재합니다."
|
|
|
|
echo "백엔드 이미지 빌드 중..."
|
|
docker-compose -f docker/prod/docker-compose.backend.prod.yml build --no-cache
|
|
|
|
echo "백엔드 서비스 시작 중..."
|
|
docker-compose -f docker/prod/docker-compose.backend.prod.yml up -d
|
|
|
|
echo ""
|
|
echo "백엔드(Spring Boot) 서비스 안정화 대기 중... (45초)"
|
|
sleep 45
|
|
|
|
# 백엔드 상태 확인
|
|
echo "백엔드 서비스 상태 확인:"
|
|
docker-compose -f docker/prod/docker-compose.backend.prod.yml ps
|
|
|
|
# 프론트엔드 시작
|
|
echo ""
|
|
echo "============================================"
|
|
echo "2. 프론트엔드 서비스 시작 중..."
|
|
echo "============================================"
|
|
|
|
echo "프론트엔드 이미지 빌드 중..."
|
|
docker-compose -f docker/prod/docker-compose.frontend.prod.yml build --no-cache
|
|
|
|
echo "프론트엔드 서비스 시작 중..."
|
|
docker-compose -f docker/prod/docker-compose.frontend.prod.yml up -d
|
|
|
|
echo ""
|
|
echo "프론트엔드 서비스 안정화 대기 중... (15초)"
|
|
sleep 15
|
|
|
|
# 프론트엔드 상태 확인
|
|
echo "프론트엔드 서비스 상태 확인:"
|
|
docker-compose -f docker/prod/docker-compose.frontend.prod.yml ps
|
|
|
|
echo ""
|
|
echo "============================================"
|
|
echo "모든 서비스가 시작되었습니다!"
|
|
echo "============================================"
|
|
echo ""
|
|
echo "서비스 접속 정보:"
|
|
echo " [DATABASE] PostgreSQL: http://39.117.244.52:11132"
|
|
echo " [BACKEND] Spring Boot: http://localhost:8081/api"
|
|
echo " [FRONTEND] Next.js: http://localhost:5555"
|
|
echo ""
|
|
echo "관리 명령어:"
|
|
echo " 서비스 상태 확인:"
|
|
echo " 백엔드: docker-compose -f docker/prod/docker-compose.backend.prod.yml ps"
|
|
echo " 프론트엔드: docker-compose -f docker/prod/docker-compose.frontend.prod.yml ps"
|
|
echo " 전체: docker ps"
|
|
echo ""
|
|
echo " 로그 확인:"
|
|
echo " 백엔드: docker-compose -f docker/prod/docker-compose.backend.prod.yml logs -f"
|
|
echo " 프론트엔드: docker-compose -f docker/prod/docker-compose.frontend.prod.yml logs -f"
|
|
echo ""
|
|
echo " 서비스 중지:"
|
|
echo " 백엔드: docker-compose -f docker/prod/docker-compose.backend.prod.yml down"
|
|
echo " 프론트엔드: docker-compose -f docker/prod/docker-compose.frontend.prod.yml down"
|
|
echo ""
|
|
echo "============================================"
|
|
|
|
# 서비스 헬스체크
|
|
echo ""
|
|
echo "서비스 헬스체크 수행 중..."
|
|
echo ""
|
|
|
|
# 백엔드 헬스체크 (최대 90초 대기 - Spring Boot는 시작이 느림)
|
|
echo "백엔드 헬스체크..."
|
|
backend_healthy=false
|
|
for i in {1..18}; do
|
|
if curl -s http://localhost:8081/health >/dev/null 2>&1; then
|
|
echo " 백엔드 서비스 정상"
|
|
backend_healthy=true
|
|
break
|
|
else
|
|
echo " 백엔드 응답 대기 중... ($i/18)"
|
|
if [ $i -eq 9 ]; then
|
|
echo " 백엔드 컨테이너 상태 확인:"
|
|
docker-compose -f docker/prod/docker-compose.backend.prod.yml ps
|
|
echo " 백엔드 로그 (최근 10줄):"
|
|
docker-compose -f docker/prod/docker-compose.backend.prod.yml logs --tail=10
|
|
fi
|
|
sleep 5
|
|
fi
|
|
done
|
|
|
|
if [ "$backend_healthy" = false ]; then
|
|
echo " 백엔드 헬스체크 실패"
|
|
echo " 상세 진단 정보:"
|
|
echo " 컨테이너 상태:"
|
|
docker-compose -f docker/prod/docker-compose.backend.prod.yml ps
|
|
echo " 최근 로그:"
|
|
docker-compose -f docker/prod/docker-compose.backend.prod.yml logs --tail=20
|
|
echo " 포트 8081 사용 현황:"
|
|
netstat -tln 2>/dev/null | grep ':8081' || echo " 포트 8081이 사용되지 않음"
|
|
fi
|
|
|
|
# 프론트엔드 헬스체크 (최대 30초 대기)
|
|
echo "프론트엔드 헬스체크..."
|
|
for i in {1..6}; do
|
|
if curl -s http://localhost:5555 >/dev/null 2>&1; then
|
|
echo " 프론트엔드 서비스 정상"
|
|
break
|
|
else
|
|
echo " 프론트엔드 응답 대기 중... ($i/6)"
|
|
sleep 5
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo "시작 완료! 브라우저에서 http://localhost:5555 을 확인하세요."
|
|
echo ""
|
|
|
|
read -p "계속하려면 Enter 키를 누르세요..."
|