#!/bin/bash # 시작 시간 기록 START_TIME=$(date +%s) START_TIME_FORMATTED=$(date '+%Y-%m-%d %H:%M:%S') echo "============================================" echo "PLM 솔루션 - 전체 서비스 시작 (병렬 최적화)" echo "============================================" echo "🕐 시작 시간: $START_TIME_FORMATTED" echo "" echo "🚀 백엔드와 프론트엔드를 병렬로 빌드 및 시작합니다..." echo "" # 기존 컨테이너 강제 삭제 (이름 충돌 방지) echo "============================================" echo "0. 기존 컨테이너 정리 중..." echo "============================================" docker rm -f pms-backend-mac pms-frontend-mac 2>/dev/null || echo "기존 컨테이너가 없습니다." docker network rm pms-network 2>/dev/null || echo "기존 네트워크가 없습니다." docker network create pms-network 2>/dev/null || echo "네트워크를 생성했습니다." echo "" # 병렬 빌드 시작 PARALLEL_START=$(date +%s) echo "============================================" echo "1. 병렬 빌드 시작 (백엔드 + 프론트엔드)" echo "============================================" # 백엔드 빌드 (백그라운드) echo "🔧 백엔드 빌드 시작..." ( docker-compose -f docker/dev/docker-compose.backend.mac.yml build echo "✅ 백엔드 빌드 완료" ) & BACKEND_PID=$! # 프론트엔드 빌드 (백그라운드) echo "🔧 프론트엔드 빌드 시작..." ( docker-compose -f docker/dev/docker-compose.frontend.mac.yml build echo "✅ 프론트엔드 빌드 완료" ) & FRONTEND_PID=$! # 두 빌드가 모두 완료될 때까지 대기 echo "⏳ 병렬 빌드 진행 중..." wait $BACKEND_PID wait $FRONTEND_PID PARALLEL_END=$(date +%s) PARALLEL_DURATION=$((PARALLEL_END - PARALLEL_START)) echo "✅ 병렬 빌드 완료 (${PARALLEL_DURATION}초 소요)" # 서비스 시작 echo "" echo "============================================" echo "2. 서비스 시작 중..." echo "============================================" SERVICE_START=$(date +%s) # 기존 컨테이너 정리 docker-compose -f docker/dev/docker-compose.backend.mac.yml down -v 2>/dev/null docker-compose -f docker/dev/docker-compose.frontend.mac.yml down -v 2>/dev/null # 백엔드 시작 (백그라운드) echo "🚀 백엔드 서비스 시작..." docker-compose -f docker/dev/docker-compose.backend.mac.yml up -d & BACKEND_START_PID=$! # 프론트엔드 시작 (백그라운드) echo "🚀 프론트엔드 서비스 시작..." docker-compose -f docker/dev/docker-compose.frontend.mac.yml up -d & FRONTEND_START_PID=$! # 서비스 시작 완료 대기 wait $BACKEND_START_PID wait $FRONTEND_START_PID echo "" echo "⏳ 서비스 안정화 대기 중... (8초)" sleep 8 SERVICE_END=$(date +%s) SERVICE_DURATION=$((SERVICE_END - SERVICE_START)) echo "✅ 서비스 시작 완료 (${SERVICE_DURATION}초 소요)" echo "" echo "============================================" echo "🎉 모든 서비스가 시작되었습니다!" echo "============================================" echo "" echo "[DATABASE] PostgreSQL: http://39.117.244.52:11132" echo "[BACKEND] Node.js API: http://localhost:8080/api" echo "[FRONTEND] Next.js: http://localhost:9771" echo "" echo "서비스 상태 확인:" echo " 백엔드: docker-compose -f docker/dev/docker-compose.backend.mac.yml ps" echo " 프론트엔드: docker-compose -f docker/dev/docker-compose.frontend.mac.yml ps" echo "" echo "로그 확인:" echo " 백엔드: docker-compose -f docker/dev/docker-compose.backend.mac.yml logs -f" echo " 프론트엔드: docker-compose -f docker/dev/docker-compose.frontend.mac.yml logs -f" echo "" echo "서비스 중지:" echo " 백엔드: docker-compose -f docker/dev/docker-compose.backend.mac.yml down" echo " 프론트엔드: docker-compose -f docker/dev/docker-compose.frontend.mac.yml down" echo " 전체: ./stop-all.sh" echo "" echo "============================================" # 종료 시간 계산 및 표시 END_TIME=$(date +%s) END_TIME_FORMATTED=$(date '+%Y-%m-%d %H:%M:%S') DURATION=$((END_TIME - START_TIME)) MINUTES=$((DURATION / 60)) SECONDS=$((DURATION % 60)) echo "🕐 종료 시간: $END_TIME_FORMATTED" echo "⏱️ 총 소요 시간: ${MINUTES}분 ${SECONDS}초" echo "" echo "📊 단계별 소요 시간:" echo " • 병렬 빌드: ${PARALLEL_DURATION}초" echo " • 서비스 시작: ${SERVICE_DURATION}초" echo "============================================" read -p "계속하려면 아무 키나 누르세요..."