#!/bin/bash # ============================================================================= # M-Project 배포 패키지 생성 스크립트 # ============================================================================= set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" DEPLOY_DIR="$SCRIPT_DIR" PACKAGE_DIR="$DEPLOY_DIR/mproject-package" echo "==========================================" echo "M-Project 배포 패키지 생성" echo "==========================================" # 기존 패키지 삭제 rm -rf "$PACKAGE_DIR" mkdir -p "$PACKAGE_DIR" # 1. Docker 설정 파일 echo "📦 Docker 설정 복사..." cp "$DEPLOY_DIR/docker-compose.synology.yml" "$PACKAGE_DIR/docker-compose.yml" cp "$DEPLOY_DIR/.env.synology" "$PACKAGE_DIR/.env.example" cp "$DEPLOY_DIR/deploy.sh" "$PACKAGE_DIR/" chmod +x "$PACKAGE_DIR/deploy.sh" # 2. 데이터베이스 백업 생성 echo "📦 DB 백업 시도..." if docker exec m-project-db pg_dump -U mproject mproject > "$PACKAGE_DIR/backup_$(date +%Y%m%d_%H%M%S).sql" 2>/dev/null; then echo " ✅ DB 백업 완료" else echo " ⚠️ DB 백업 건너뜀 (컨테이너 미실행)" rm -f "$PACKAGE_DIR"/backup_*.sql fi # 3. 소스 코드 복사 echo "📦 소스 코드 복사..." # Backend mkdir -p "$PACKAGE_DIR/backend" rsync -a --exclude='__pycache__' --exclude='.git' --exclude='venv' --exclude='*.pyc' \ "$PROJECT_DIR/backend/" "$PACKAGE_DIR/backend/" # Frontend mkdir -p "$PACKAGE_DIR/frontend" rsync -a --exclude='.git' --exclude='uploads' \ "$PROJECT_DIR/frontend/" "$PACKAGE_DIR/frontend/" # Nginx mkdir -p "$PACKAGE_DIR/nginx" rsync -a "$PROJECT_DIR/nginx/" "$PACKAGE_DIR/nginx/" # 4. init-db 폴더 (마이그레이션 스크립트) mkdir -p "$PACKAGE_DIR/init-db" if [ -d "$PROJECT_DIR/backend/migrations" ]; then cp "$PROJECT_DIR/backend/migrations"/*.sql "$PACKAGE_DIR/init-db/" 2>/dev/null || true fi # 5. 압축 echo "📦 압축 중..." cd "$DEPLOY_DIR" TIMESTAMP=$(date +%Y%m%d_%H%M%S) tar -czf "mproject-deploy-$TIMESTAMP.tar.gz" -C "$DEPLOY_DIR" mproject-package # 크기 확인 echo "" echo "==========================================" echo "✅ 패키지 생성 완료!" echo "==========================================" ls -lh "$DEPLOY_DIR/mproject-deploy-$TIMESTAMP.tar.gz" echo "" echo "파일: $DEPLOY_DIR/mproject-deploy-$TIMESTAMP.tar.gz" echo "" echo "Synology NAS로 전송:" echo " scp $DEPLOY_DIR/mproject-deploy-$TIMESTAMP.tar.gz admin@NAS_IP:/volume1/docker/" echo "" echo "NAS에서 설치:" echo " cd /volume1/docker/" echo " tar -xzf mproject-deploy-$TIMESTAMP.tar.gz" echo " cd mproject-package" echo " cp .env.example .env && vi .env" echo " bash deploy.sh" echo ""