#!/bin/bash # OS 확인 OS_INFO=$(grep '^ID=' /etc/os-release) if [[ "$OS_INFO" != *"ubuntu"* ]]; then echo "This script runs on Ubuntu only." exit 1 fi # 키보드 레이아웃을 영문(US)으로 설정 echo "Setting keyboard layout to English (US)..." # CLI 환경에서 키보드 레이아웃 설정 if command -v loadkeys >/dev/null 2>&1 && [ $(id -u) -eq 0 ]; then echo "Setting console keyboard layout to US..." loadkeys us elif command -v loadkeys >/dev/null 2>&1; then echo "To change keyboard layout, run with sudo: sudo loadkeys us" # 권한이 없어도 시도는 해봄 sudo loadkeys us 2>/dev/null || true fi echo "Starting Production Environment..." # 환경 변수 파일 로드 if [ -f .env.production ]; then echo "Loading production environment variables..." set -a source .env.production set +a else echo "Error: .env.production file not found!" exit 1 fi echo "Starting Production Environment..." # .sh 파일들에 실행 권한 부여 echo "Setting execute permissions for shell scripts..." chmod +x *.sh export NODE_ENV=production # 웹서비스만 정리 (DB는 유지) echo "Stopping web service only (keeping database running)..." docker stop bns_system 2>/dev/null || true docker rm bns_system 2>/dev/null || true echo "Pruning Docker system (excluding volumes to preserve DB data)..." # 컨테이너 정리 (볼륨은 제외하여 DB 데이터 보존) docker system prune -af docker image prune -af # docker volume prune -af # DB 데이터 보존을 위해 주석 처리 # Git 관련 명령어 실행 git reset --hard git checkout main # 강제로 리모트 브랜치의 내용을 가져옴 if ! git fetch origin; then echo "Git fetch failed. Exiting script." exit 1 fi if ! git reset --hard origin/main; then echo "Git reset failed. Exiting script." exit 1 fi # 웹서비스 컨테이너 빌드하고 시작 echo "Starting web service..." docker-compose -f docker-compose.prod.yml up --build -d bns_system echo "Production environment setup complete!" echo "Web service: Restarted with latest code"