diff --git a/docker-compose-mssql.yml b/docker-compose-mssql.yml index f7520bc..bb075ef 100644 --- a/docker-compose-mssql.yml +++ b/docker-compose-mssql.yml @@ -9,17 +9,20 @@ services: ACCEPT_EULA: Y SA_PASSWORD: ${SA_PASSWORD:-wace0909!!} MSSQL_PID: ${MSSQL_PID:-Express} + MSSQL_ENCRYPT: 'false' + MSSQL_TRUST_SERVER_CERTIFICATE: 'true' TZ: Asia/Seoul ports: - "11433:1433" volumes: - mssql_data:/var/opt/mssql - - ./mssql-init:/docker-entrypoint-initdb.d - ./mssql-backup:/var/opt/mssql/backup networks: - mssql_network hostname: mssql-server user: root + mem_limit: 2g + cpus: 2 # MSSQL 관리용 Adminer (선택사항) mssql-adminer: diff --git a/git-update.sh b/git-update.sh new file mode 100644 index 0000000..258febc --- /dev/null +++ b/git-update.sh @@ -0,0 +1,82 @@ +#!/bin/bash + +# Git 강제 업데이트 전용 스크립트 + +echo "=== Git 강제 업데이트 ===" +echo "" + +if [ ! -d ".git" ]; then + echo "❌ Git 저장소가 아닙니다." + echo "다음 명령어로 저장소를 클론하세요:" + echo "git clone http://39.117.244.52:3000/chpark/database.git" + exit 1 +fi + +# 현재 상태 표시 +echo "📋 현재 Git 상태:" +git status --short +echo "" + +# 현재 브랜치 확인 +CURRENT_BRANCH=$(git branch --show-current) +echo "현재 브랜치: $CURRENT_BRANCH" +echo "" + +# 백업 옵션 +if [ "$1" = "--no-backup" ]; then + echo "⚠️ 백업 없이 강제 업데이트합니다." +else + # 변경사항이 있으면 백업 + if ! git diff --quiet || ! git diff --cached --quiet; then + echo "💾 로컬 변경사항을 백업합니다..." + STASH_NAME="backup-$(date '+%Y%m%d-%H%M%S')" + git stash push -m "$STASH_NAME" + echo "✅ 백업 완료: $STASH_NAME" + echo "" + fi +fi + +# 원격 저장소 정보 업데이트 +echo "📡 원격 저장소 정보 가져오는 중..." +git fetch origin + +# 강제 리셋 +echo "🔄 최신 소스로 강제 업데이트 중..." +git reset --hard origin/$CURRENT_BRANCH + +# 추적되지 않는 파일 정리 +echo "🧹 불필요한 파일 정리 중..." +git clean -fd + +echo "" +echo "✅ Git 강제 업데이트 완료!" +echo "" + +# 업데이트 결과 +echo "📊 업데이트 결과:" +echo "최신 커밋:" +git log --oneline -3 +echo "" + +echo "변경된 파일 (최근 커밋):" +git diff --name-only HEAD~1 HEAD 2>/dev/null || echo "변경된 파일이 없습니다." +echo "" + +# Stash 목록 표시 +STASH_COUNT=$(git stash list | wc -l) +if [ $STASH_COUNT -gt 0 ]; then + echo "💾 백업된 변경사항 ($STASH_COUNT개):" + git stash list | head -5 + if [ $STASH_COUNT -gt 5 ]; then + echo "... 그리고 $((STASH_COUNT - 5))개 더" + fi + echo "" + echo "백업 복원 방법:" + echo " 최근 백업 복원: git stash pop" + echo " 특정 백업 복원: git stash apply stash@{번호}" + echo " 백업 목록 보기: git stash list" +fi + +echo "" +echo "🚀 이제 데이터베이스를 시작하려면:" +echo " ./start-all-db.sh" diff --git a/start-all-db.sh b/start-all-db.sh index 4afaf02..50089ba 100644 --- a/start-all-db.sh +++ b/start-all-db.sh @@ -5,6 +5,43 @@ echo "=== 3개 데이터베이스 컨테이너를 시작합니다 ===" echo "" +# Git에서 최신 소스 강제 업데이트 +echo "0. Git 최신 소스 업데이트..." +if [ -d ".git" ]; then + echo "Git 저장소 감지됨. 최신 소스를 받아옵니다..." + + # 현재 변경사항 백업 (있다면) + if ! git diff --quiet || ! git diff --cached --quiet; then + echo "로컬 변경사항이 있습니다. 백업 중..." + git stash push -m "Auto backup before update $(date)" + echo "변경사항이 stash에 백업되었습니다." + fi + + # 원격 저장소에서 최신 정보 가져오기 + echo "원격 저장소 정보 업데이트 중..." + git fetch origin + + # 현재 브랜치 확인 + CURRENT_BRANCH=$(git branch --show-current) + echo "현재 브랜치: $CURRENT_BRANCH" + + # 강제로 원격 브랜치로 리셋 + echo "최신 소스로 강제 업데이트 중..." + git reset --hard origin/$CURRENT_BRANCH + + # 추적되지 않는 파일 정리 + git clean -fd + + echo "✅ Git 업데이트 완료!" + + # 최근 커밋 정보 표시 + echo "최신 커밋 정보:" + git log --oneline -3 +else + echo "⚠️ Git 저장소가 아닙니다. 업데이트를 건너뜁니다." +fi +echo "" + # MariaDB 시작 echo "1. MariaDB 시작..." if [ -f "docker-compose-mariadb.yml" ]; then diff --git a/update-and-start.sh b/update-and-start.sh new file mode 100644 index 0000000..26a3778 --- /dev/null +++ b/update-and-start.sh @@ -0,0 +1,135 @@ +#!/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"