Files
TK-FB-Project/synology_deployment/deploy.sh
Hyungi Ahn a9bce9d20b fix: 캘린더 모달 중복 카드 문제 및 삭제 권한 개선
- monthly_worker_status 조회 시 GROUP BY로 중복 데이터 합산
- 작업보고서 삭제 권한을 그룹장 이상으로 제한 (admin, system, group_leader)
- 중복 데이터 정리를 위한 마이그레이션 SQL 추가 (009_fix_duplicate_monthly_status.sql)
- synology_deployment 버전에도 동일 수정 적용
2025-12-02 13:08:44 +09:00

149 lines
4.0 KiB
Bash
Executable File

#!/bin/bash
# TK-FB-Project 시놀로지 NAS 923+ 배포 스크립트
# 생성일: 2025-11-05
# 작성자: TK-FB-Project Team
set -e
echo "🚀 TK-FB-Project 시놀로지 배포 시작..."
# 색상 정의
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 로그 함수
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 1. 시스템 요구사항 확인
log_info "시스템 요구사항 확인 중..."
if ! command -v docker &> /dev/null; then
log_error "Docker가 설치되지 않았습니다. Docker를 먼저 설치해주세요."
exit 1
fi
if ! command -v docker-compose &> /dev/null; then
log_error "Docker Compose가 설치되지 않았습니다. Docker Compose를 먼저 설치해주세요."
exit 1
fi
log_success "Docker 및 Docker Compose 확인 완료"
# 2. 필요한 디렉토리 생성
log_info "시놀로지 볼륨 디렉토리 생성 중..."
VOLUME_PATH="/volume2/docker/tkfb"
sudo mkdir -p ${VOLUME_PATH}/{mysql_data,api_logs,api_uploads,fastapi_logs,redis_data}
sudo chmod -R 755 ${VOLUME_PATH}
log_success "볼륨 디렉토리 생성 완료"
# 3. 환경 설정 파일 준비
log_info "환경 설정 파일 준비 중..."
if [ ! -f ".env" ]; then
if [ -f "env_config.txt" ]; then
cp env_config.txt .env
log_success "환경 설정 파일 생성 완료"
else
log_error "env_config.txt 파일이 없습니다."
exit 1
fi
else
log_warning "기존 .env 파일이 존재합니다. 백업 후 계속 진행합니다."
cp .env .env.backup.$(date +%Y%m%d_%H%M%S)
fi
# 4. 기존 컨테이너 정리
log_info "기존 컨테이너 정리 중..."
if [ "$(docker ps -aq -f name=tkfb_)" ]; then
docker stop $(docker ps -aq -f name=tkfb_) 2>/dev/null || true
docker rm $(docker ps -aq -f name=tkfb_) 2>/dev/null || true
log_success "기존 컨테이너 정리 완료"
fi
# 5. Docker 이미지 빌드
log_info "Docker 이미지 빌드 중..."
docker-compose build --no-cache
log_success "Docker 이미지 빌드 완료"
# 6. 서비스 시작
log_info "서비스 시작 중..."
docker-compose up -d
# 7. 서비스 상태 확인
log_info "서비스 상태 확인 중..."
sleep 30
# 각 서비스 헬스체크
services=("tkfb_db_prod" "tkfb_api_prod" "tkfb_web_prod" "tkfb_fastapi_prod")
for service in "${services[@]}"; do
if [ "$(docker ps -q -f name=$service -f status=running)" ]; then
log_success "$service 서비스 실행 중"
else
log_error "$service 서비스 실행 실패"
docker logs $service --tail 20
fi
done
# 8. 네트워크 연결 테스트
log_info "네트워크 연결 테스트 중..."
# API 서버 테스트
if curl -f http://localhost:20005/api/ping >/dev/null 2>&1; then
log_success "API 서버 연결 성공 (포트: 20005)"
else
log_warning "API 서버 연결 실패 - 잠시 후 다시 시도해주세요"
fi
# 웹 서버 테스트
if curl -f http://localhost:20000 >/dev/null 2>&1; then
log_success "웹 서버 연결 성공 (포트: 20000)"
else
log_warning "웹 서버 연결 실패 - 잠시 후 다시 시도해주세요"
fi
# 9. 배포 완료 안내
echo ""
echo "🎉 TK-FB-Project 시놀로지 배포 완료!"
echo ""
echo "📋 접속 정보:"
echo " - 메인 애플리케이션: http://[시놀로지IP]:20000"
echo " - API 서버: http://[시놀로지IP]:20005"
echo " - FastAPI 브리지: http://[시놀로지IP]:8000"
echo " - phpMyAdmin: http://[시놀로지IP]:8080"
echo ""
echo "🔧 관리 명령어:"
echo " - 서비스 중지: docker-compose down"
echo " - 서비스 재시작: docker-compose restart"
echo " - 로그 확인: docker-compose logs -f [서비스명]"
echo " - 상태 확인: docker-compose ps"
echo ""
echo "📁 데이터 위치: ${VOLUME_PATH}"
echo ""
log_success "배포 스크립트 실행 완료"