database/update-and-start.sh

136 lines
4.1 KiB
Bash

#!/bin/bash
# Git 업데이트 후 데이터베이스 컨테이너 시작 스크립트
echo "=== Git 업데이트 및 데이터베이스 시작 ==="
echo ""
# Git 업데이트 옵션 확인
UPDATE_MODE="normal"
if [ "$1" = "--force" ] || [ "$1" = "-f" ]; then
UPDATE_MODE="force"
echo "🔥 강제 업데이트 모드"
elif [ "$1" = "--skip" ] || [ "$1" = "-s" ]; then
UPDATE_MODE="skip"
echo "⏭️ Git 업데이트 건너뛰기"
else
echo "📥 일반 업데이트 모드"
fi
echo ""
# Git 업데이트 실행
if [ "$UPDATE_MODE" != "skip" ] && [ -d ".git" ]; then
echo "Git 저장소에서 최신 소스 업데이트 중..."
# 현재 상태 확인
echo "현재 Git 상태:"
git status --porcelain
# 변경사항 처리
if [ "$UPDATE_MODE" = "force" ]; then
echo "🔥 강제 업데이트: 모든 로컬 변경사항을 무시합니다."
git fetch origin
CURRENT_BRANCH=$(git branch --show-current)
git reset --hard origin/$CURRENT_BRANCH
git clean -fd
else
# 변경사항이 있으면 stash
if ! git diff --quiet || ! git diff --cached --quiet; then
echo "로컬 변경사항 백업 중..."
git stash push -m "Auto backup $(date '+%Y-%m-%d %H:%M:%S')"
fi
# Pull 시도
echo "최신 소스 가져오는 중..."
if git pull origin $(git branch --show-current); then
echo "✅ 업데이트 성공!"
else
echo "❌ 업데이트 실패. 충돌이 있을 수 있습니다."
echo "수동으로 해결하거나 --force 옵션을 사용하세요."
exit 1
fi
fi
# 업데이트 결과 표시
echo ""
echo "📋 최신 커밋 정보:"
git log --oneline -5
echo ""
echo "📊 변경된 파일:"
git diff --name-only HEAD~1 HEAD || echo "변경된 파일이 없습니다."
elif [ ! -d ".git" ]; then
echo "⚠️ Git 저장소가 아닙니다."
else
echo "⏭️ Git 업데이트를 건너뜁니다."
fi
echo ""
echo "=== 데이터베이스 컨테이너 시작 ==="
# 기존 start-all-db.sh 실행 (Git 업데이트 부분 제외)
# MariaDB 시작
echo "1. MariaDB 시작..."
if [ -f "docker-compose-mariadb.yml" ]; then
docker-compose -f docker-compose-mariadb.yml --env-file mariadb.env up -d
echo "MariaDB 시작 완료"
else
echo "MariaDB 설정 파일이 없습니다."
fi
echo ""
# MSSQL 시작
echo "2. MSSQL 시작..."
if [ -f "docker-compose-mssql.yml" ]; then
docker-compose -f docker-compose-mssql.yml --env-file mssql.env up -d
echo "MSSQL 시작 완료"
else
echo "MSSQL 설정 파일이 없습니다."
fi
echo ""
# Oracle 시작
echo "3. Oracle 시작..."
if [ -f "docker-compose-oracle.yml" ]; then
docker-compose -f docker-compose-oracle.yml --env-file oracle.env up -d
echo "Oracle 시작 완료 (초기화에 시간이 걸릴 수 있습니다)"
else
echo "Oracle 설정 파일이 없습니다."
fi
echo ""
# 잠시 대기 후 상태 확인
echo "컨테이너 상태를 확인합니다..."
sleep 10
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
echo ""
echo "=== 데이터베이스 연결 정보 ==="
echo ""
echo "MariaDB:"
echo " - 포트: 13306"
echo " - 데이터베이스: wace"
echo " - 사용자: wace / 비밀번호: wace0909!!"
echo " - phpMyAdmin: http://localhost:18080"
echo ""
echo "MSSQL:"
echo " - 포트: 11433"
echo " - 데이터베이스: wace"
echo " - 사용자: wace / 비밀번호: wace0909!!"
echo " - Adminer: http://localhost:18081"
echo ""
echo "Oracle:"
echo " - 포트: 11521"
echo " - SID: ORCL / PDB: ORCLPDB1"
echo " - 사용자: wace / 비밀번호: wace0909!!"
echo " - Adminer: http://localhost:18082"
echo " - Enterprise Manager: http://localhost:15500/em"
echo ""
echo "3개 데이터베이스 컨테이너 시작이 완료되었습니다!"
echo ""
echo "💡 사용법:"
echo " 일반 업데이트: ./update-and-start.sh"
echo " 강제 업데이트: ./update-and-start.sh --force"
echo " 업데이트 건너뛰기: ./update-and-start.sh --skip"