#!/bin/bash # 시작 시간 기록 START_TIME=$(date +%s) START_TIME_FORMATTED=$(date '+%Y-%m-%d %H:%M:%S') echo "============================================" echo "WACE 솔루션 - 전체 서비스 시작 (병렬 최적화)" echo "============================================" echo "시작 시간: $START_TIME_FORMATTED" echo "" echo "백엔드(Spring Boot)와 프론트엔드를 병렬로 빌드 및 시작합니다..." echo "" # 기존 컨테이너 강제 삭제 (이름 충돌 방지) echo "============================================" echo "0. 기존 컨테이너 정리 중..." echo "============================================" docker rm -f pms-backend-mac-v2 pms-frontend-mac-v2 2>/dev/null || echo "기존 컨테이너가 없습니다." docker network rm invion-network 2>/dev/null || echo "기존 네트워크가 없습니다." docker network create invion-network 2>/dev/null || echo "네트워크를 생성했습니다." echo "" # 병렬 빌드 시작 PARALLEL_START=$(date +%s) echo "============================================" echo "1. 병렬 빌드 시작 (백엔드 + 프론트엔드)" echo "============================================" # 백엔드 빌드 (백그라운드) echo "백엔드(Spring Boot) 빌드 시작..." ( 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 "백엔드(Spring Boot) 서비스 시작..." 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 "서비스 안정화 대기 중... (15초)" sleep 15 SERVICE_END=$(date +%s) SERVICE_DURATION=$((SERVICE_END - SERVICE_START)) echo "서비스 시작 완료 (${SERVICE_DURATION}초 소요)" echo "" echo "============================================" echo "모든 서비스가 시작되었습니다!" echo "============================================" echo "" echo "[DATABASE] PostgreSQL: http://211.115.91.141:11134 (test_dev)" echo "[BACKEND] Spring Boot API: http://localhost:8082/api" echo "[FRONTEND] Next.js: http://localhost:9772" 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 "" 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 "계속하려면 아무 키나 누르세요..."