diff --git a/scripts/prod/start-all-linux-force.sh b/scripts/prod/start-all-linux-force.sh deleted file mode 100755 index 908d3fd5..00000000 --- a/scripts/prod/start-all-linux-force.sh +++ /dev/null @@ -1,288 +0,0 @@ -#!/bin/bash - -echo "============================================" -echo "WACE 솔루션 - 전체 서비스 시작 (강제 업데이트) - Linux" -echo "============================================" - -echo "" -echo "🚀 최신 코드로 백엔드와 프론트엔드를 강제 업데이트하여 시작합니다..." -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 "" - -# Git 상태 확인 -echo "============================================" -echo "0. Git 상태 확인 및 최신 코드 동기화" -echo "============================================" - -echo "현재 Git 상태:" -git status --porcelain - -echo "" -echo "현재 브랜치: $(git branch --show-current)" -echo "최신 커밋: $(git log -1 --oneline)" - -# 수정된 파일이 있는지 확인 -if [ -n "$(git status --porcelain)" ]; then - echo "" - echo "⚠️ 수정된 파일이 있습니다. 다음 중 선택하세요:" - echo "1. 수정사항을 커밋하고 계속" - echo "2. 수정사항을 임시 저장(stash)하고 계속" - echo "3. 수정사항을 무시하고 강제 리셋 후 계속" - echo "4. 현재 상태로 빌드 계속" - echo "" - read -p "선택하세요 (1-4): " choice - - case $choice in - 1) - echo "변경사항을 커밋합니다..." - git add . - git commit -m "Auto commit before deployment - $(date)" - ;; - 2) - echo "변경사항을 임시 저장합니다..." - git stash push -m "Auto stash before deployment - $(date)" - ;; - 3) - echo "변경사항을 무시하고 강제 리셋합니다..." - git reset --hard HEAD - git clean -fd - ;; - 4) - echo "현재 상태로 계속합니다..." - ;; - *) - echo "잘못된 선택입니다. 현재 상태로 계속합니다..." - ;; - esac -fi - -# 원격 저장소에서 최신 코드 가져오기 -echo "" -echo "원격 저장소에서 최신 코드를 가져옵니다..." -git fetch origin -current_branch=$(git branch --show-current) -git pull origin $current_branch || echo "⚠️ Pull 실패 - 현재 상태로 계속합니다." - -# 기존 컨테이너 및 이미지 완전 정리 -echo "" -echo "============================================" -echo "1. 기존 서비스 완전 정리 중..." -echo "============================================" - -# 모든 관련 컨테이너 중지 및 제거 -echo "기존 컨테이너 중지 및 제거 중..." -docker-compose -f docker/prod/docker-compose.backend.prod.yml down -v --remove-orphans 2>/dev/null || true -docker-compose -f docker/prod/docker-compose.frontend.prod.yml down -v --remove-orphans 2>/dev/null || true - -# 관련 컨테이너 강제 제거 -docker stop pms-backend-prod pms-frontend-linux 2>/dev/null || true -docker rm pms-backend-prod pms-frontend-linux 2>/dev/null || true - -# 관련 이미지 제거 (캐시 무효화) -echo "기존 이미지 제거 중..." -docker rmi $(docker images | grep -E "(pms-|erp-node)" | awk '{print $3}') 2>/dev/null || true - -# Docker 시스템 정리 -echo "Docker 시스템 정리 중..." -docker system prune -f --volumes 2>/dev/null || true -docker builder prune -f 2>/dev/null || true - -# 네트워크 재생성 -echo "네트워크 재생성..." -docker network rm pms-network 2>/dev/null || true -docker network create pms-network 2>/dev/null || echo "네트워크 생성 실패 - 기본 네트워크 사용" - -# 백엔드 먼저 시작 -echo "" -echo "============================================" -echo "2. 백엔드 서비스 시작 중..." -echo "============================================" - -# 백엔드 의존성 체크 -echo "백엔드 의존성 확인 중..." -if [ ! -f "backend-node/package.json" ]; then - echo "❌ backend-node/package.json을 찾을 수 없습니다." - exit 1 -fi - -if [ ! -f "backend-node/src/app.ts" ]; then - echo "❌ backend-node/src/app.ts를 찾을 수 없습니다." - exit 1 -fi - -# 백엔드 빌드 (캐시 무시) -echo "백엔드 이미지 빌드 중... (캐시 무시)" -docker-compose -f docker/prod/docker-compose.backend.prod.yml build --no-cache --pull - -if [ $? -ne 0 ]; then - echo "❌ 백엔드 빌드 실패" - exit 1 -fi - -echo "백엔드 서비스 시작 중..." -docker-compose -f docker/prod/docker-compose.backend.prod.yml up -d - -echo "" -echo "⏳ 백엔드 서비스 안정화 대기 중... (45초)" -sleep 45 - -# 백엔드 상태 확인 -echo "백엔드 서비스 상태 확인:" -docker-compose -f docker/prod/docker-compose.backend.prod.yml ps - -# 백엔드 로그 확인 -echo "" -echo "백엔드 최근 로그:" -docker-compose -f docker/prod/docker-compose.backend.prod.yml logs --tail=10 - -# 프론트엔드 시작 -echo "" -echo "============================================" -echo "3. 프론트엔드 서비스 시작 중..." -echo "============================================" - -# 프론트엔드 의존성 체크 -echo "프론트엔드 의존성 확인 중..." -if [ ! -f "frontend/package.json" ]; then - echo "❌ frontend/package.json을 찾을 수 없습니다." - exit 1 -fi - -if [ ! -f "frontend/next.config.mjs" ]; then - echo "❌ frontend/next.config.mjs를 찾을 수 없습니다." - exit 1 -fi - -echo "프론트엔드 이미지 빌드 중... (캐시 무시)" -docker-compose -f docker/prod/docker-compose.frontend.prod.yml build --no-cache --pull - -if [ $? -ne 0 ]; then - echo "❌ 프론트엔드 빌드 실패" - exit 1 -fi - -echo "프론트엔드 서비스 시작 중..." -docker-compose -f docker/prod/docker-compose.frontend.prod.yml up -d - -echo "" -echo "⏳ 프론트엔드 서비스 안정화 대기 중... (30초)" -sleep 30 - -# 프론트엔드 상태 확인 -echo "프론트엔드 서비스 상태 확인:" -docker-compose -f docker/prod/docker-compose.frontend.prod.yml ps - -# 프론트엔드 로그 확인 -echo "" -echo "프론트엔드 최근 로그:" -docker-compose -f docker/prod/docker-compose.frontend.prod.yml logs --tail=10 - -echo "" -echo "============================================" -echo "🎉 모든 서비스가 시작되었습니다!" -echo "============================================" -echo "" -echo "📊 서비스 접속 정보:" -echo " [DATABASE] PostgreSQL: http://39.117.244.52:11132" -echo " [BACKEND] Spring Boot: http://localhost:8080/api" -echo " [FRONTEND] Next.js: http://localhost:5555" -echo "" - -# 서비스 헬스체크 -echo "" -echo "🏥 서비스 헬스체크 수행 중..." -echo "" - -# 백엔드 헬스체크 (최대 2분 대기) -echo "백엔드 헬스체크..." -backend_healthy=false -for i in {1..24}; do - if curl -s -f http://localhost:8080/health >/dev/null 2>&1; then - echo " ✅ 백엔드 서비스 정상" - backend_healthy=true - break - else - echo " ⏳ 백엔드 응답 대기 중... ($i/24)" - sleep 5 - fi -done - -if [ "$backend_healthy" = false ]; then - echo " ❌ 백엔드 헬스체크 실패" - echo " 백엔드 로그:" - docker-compose -f docker/prod/docker-compose.backend.prod.yml logs --tail=20 -fi - -# 프론트엔드 헬스체크 (최대 1분 대기) -echo "프론트엔드 헬스체크..." -frontend_healthy=false -for i in {1..12}; do - if curl -s -f http://localhost:5555 >/dev/null 2>&1; then - echo " ✅ 프론트엔드 서비스 정상" - frontend_healthy=true - break - else - echo " ⏳ 프론트엔드 응답 대기 중... ($i/12)" - sleep 5 - fi -done - -if [ "$frontend_healthy" = false ]; then - echo " ❌ 프론트엔드 헬스체크 실패" - echo " 프론트엔드 로그:" - docker-compose -f docker/prod/docker-compose.frontend.prod.yml logs --tail=20 -fi - -# 최종 상태 요약 -echo "" -echo "============================================" -echo "🎯 배포 완료 요약" -echo "============================================" -echo "" -echo "Git 정보:" -echo " 브랜치: $(git branch --show-current)" -echo " 커밋: $(git log -1 --oneline)" -echo " 상태: $(git status --porcelain | wc -l) 개의 수정된 파일" -echo "" -echo "서비스 상태:" -if [ "$backend_healthy" = true ]; then - echo " ✅ 백엔드: 정상" -else - echo " ❌ 백엔드: 오류" -fi - -if [ "$frontend_healthy" = true ]; then - echo " ✅ 프론트엔드: 정상" -else - echo " ❌ 프론트엔드: 오류" -fi - -echo "" -echo "🔧 유용한 명령어:" -echo " 전체 로그 확인: docker-compose -f docker/prod/docker-compose.backend.prod.yml -f docker/prod/docker-compose.frontend.prod.yml logs -f" -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 " 컨테이너 상태: docker ps" -echo " 서비스 중지: ./stop-all-linux.sh" -echo "" - -if [ "$backend_healthy" = true ] && [ "$frontend_healthy" = true ]; then - echo "🎯 성공! 브라우저에서 http://localhost:5555 을 확인하세요." -else - echo "⚠️ 일부 서비스에 문제가 있습니다. 로그를 확인해주세요." -fi - -echo "" -read -p "계속하려면 Enter 키를 누르세요..." diff --git a/scripts/prod/start-all-linux.sh b/scripts/prod/start-all-linux.sh index a2de431f..cf2d90fb 100644 --- a/scripts/prod/start-all-linux.sh +++ b/scripts/prod/start-all-linux.sh @@ -45,7 +45,7 @@ docker network create pms-network 2>/dev/null || echo "네트워크가 이미 # 백엔드 빌드 및 시작 echo "백엔드 이미지 빌드 중..." -docker-compose -f docker/prod/docker-compose.backend.prod.yml build --no-cache --pull +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 @@ -65,7 +65,7 @@ echo "2. 프론트엔드 서비스 시작 중..." echo "============================================" echo "프론트엔드 이미지 빌드 중..." -docker-compose -f docker/prod/docker-compose.frontend.prod.yml build --no-cache --pull +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