Files
invyone/scripts/dev/start-all-parallel.sh
T
2026-04-07 13:39:14 +09:00

129 lines
4.4 KiB
Bash
Executable File

#!/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 "계속하려면 아무 키나 누르세요..."