Files
crawlmanager/start-server.sh
T
chpark 0a322bafa3 fix: DB 연결 재시도 + git 인증 + 볼륨 경로 수정
- db.js: waitForDB() 추가 (최대 10회, 3초 간격 재시도)
- app.js: DB 연결 시 waitForDB 사용
- start-server.sh: git 유저명 @를 %40으로 인코딩
- docker-compose.yml: 볼륨 상대경로로 변경 (./data/)
- 디렉토리 권한 문제 해결

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 01:23:32 +09:00

97 lines
2.4 KiB
Bash

#!/bin/bash
# ==========================================
# Crawl Manager 서버 배포 스크립트 (Ubuntu)
# 사용법: chmod +x start-server.sh && ./start-server.sh
# ==========================================
# OS 확인
OS_INFO=$(grep '^ID=' /etc/os-release)
if [[ "$OS_INFO" != *"ubuntu"* ]]; then
echo "This script runs on Ubuntu only."
exit 1
fi
echo ""
echo "=========================================="
echo " Crawl Manager 서버 배포"
echo "=========================================="
echo ""
# 환경 변수 파일 확인
if [ -f .env.production ]; then
echo "[OK] .env.production 로드 중..."
set -a
source .env.production
set +a
else
echo "[ERROR] .env.production 파일이 없습니다!"
exit 1
fi
export NODE_ENV=production
# 이전 컨테이너 정리
echo ""
echo "[1/5] 기존 컨테이너 정리..."
docker compose down 2>/dev/null || docker-compose down 2>/dev/null
echo "[2/5] Docker 시스템 정리..."
docker system prune -af
docker image prune -af
# Git 설정 - 인증정보 URL에 포함시켜 비밀번호 입력 생략
# @는 %40으로 인코딩
GIT_USER="chpark%40wace.me"
GIT_PASS="chpark"
GIT_REPO="39.117.244.52:3000/chpark/admin_st.git"
GIT_URL="http://${GIT_USER}:${GIT_PASS}@${GIT_REPO}"
echo ""
echo "[3/5] Git 최신 소스 받기..."
# remote URL을 인증정보 포함 URL로 설정
git remote set-url origin "$GIT_URL" 2>/dev/null
git reset --hard
if ! git fetch origin; then
echo "[ERROR] git fetch 실패"
exit 1
fi
if ! git reset --hard origin/main; then
echo "[ERROR] git reset 실패"
exit 1
fi
echo "[OK] 최신 소스 적용 완료"
git log --oneline -3
# 데이터 디렉토리 생성 (현재 위치 기준)
echo ""
echo "[4/5] 데이터 디렉토리 준비..."
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
mkdir -p "${SCRIPT_DIR}/data/postgres"
mkdir -p "${SCRIPT_DIR}/data/app"
# Docker 빌드 & 실행
echo ""
echo "[5/5] Docker 빌드 및 실행..."
docker compose up --build --force-recreate -d
# 상태 확인
echo ""
echo "컨테이너 상태 확인 중..."
sleep 5
docker compose ps
echo ""
docker compose logs --tail=30 crawl-manager
echo ""
echo "=========================================="
echo " 배포 완료!"
echo " 관리자: https://admin.startover.co.kr/admin"
echo " DB 외부접속: $(hostname -I | awk '{print $1}'):11137"
echo "=========================================="