diff --git a/scripts/deploy.sh b/scripts/deploy.sh index afa6238..2da32ce 100644 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -45,26 +45,29 @@ rsync -a --delete \ "$DST/" "$BACKUP_DIR.tmp/" mv "$BACKUP_DIR.tmp" "$BACKUP_DIR" -# 오래된 릴리즈 정리 (최근 5개만 유지) -ls -dt "$DST/.releases"/*/ 2>/dev/null | tail -n +6 | xargs -r rm -rf +# 오래된 릴리즈 정리 (최근 5개만 유지, 권한 문제 우회) +ls -dt "$DST/.releases"/*/ 2>/dev/null | tail -n +6 | while read -r old_dir; do + chmod -R u+rwX "$old_dir" 2>/dev/null || true + rm -rf "$old_dir" 2>/dev/null || true +done # ── 소스 → 운영 반영 ── bash "$SRC/scripts/deploy-nas.sh" # ── data 디렉토리 보장 (볼륨 마운트 실패 방지) ── -mkdir -p "$DST/data" "$DST/data/music" "$DST/data/stock" "$DST/data/blog" "$DST/data/realestate" +mkdir -p "$DST/data" "$DST/data/music" "$DST/data/stock" "$DST/data/blog" "$DST/data/realestate" "$DST/data/agent-office" # ── 서비스 재빌드 (deployer 제외 — 자기 자신을 재빌드하면 스크립트 중단됨) ── cd "$DST" -BUILD_TARGETS="backend travel-proxy stock-lab music-lab blog-lab realestate-lab frontend" +BUILD_TARGETS="backend travel-proxy stock-lab music-lab blog-lab realestate-lab agent-office frontend" # 1) compose가 관리하는 컨테이너 정리 (deployer 제외) docker compose stop $BUILD_TARGETS 2>/dev/null || true docker compose rm -f $BUILD_TARGETS 2>/dev/null || true # 2) Synology NAS 고아 컨테이너(해시 prefix 포함) 추가 정리 -for cname in lotto-backend stock-lab music-lab blog-lab realestate-lab travel-proxy lotto-frontend; do +for cname in lotto-backend stock-lab music-lab blog-lab realestate-lab agent-office travel-proxy lotto-frontend; do docker rm -f "$cname" 2>/dev/null || true done @@ -78,7 +81,7 @@ sleep 5 HEALTH_OK=true # 컨테이너 내부에서는 서비스명 + 내부포트(8000)로 접근 -for endpoint in "http://backend:8000/health" "http://stock-lab:8000/health" "http://travel-proxy:8000/health" "http://music-lab:8000/health" "http://blog-lab:8000/health" "http://realestate-lab:8000/health"; do +for endpoint in "http://backend:8000/health" "http://stock-lab:8000/health" "http://travel-proxy:8000/health" "http://music-lab:8000/health" "http://blog-lab:8000/health" "http://realestate-lab:8000/health" "http://agent-office:8000/health"; do if ! curl -sf --max-time 10 --retry 2 --retry-delay 3 "$endpoint" > /dev/null 2>&1; then echo "HEALTH_FAIL: $endpoint" HEALTH_OK=false