Files
bns_system/start-prod-full.sh
2025-09-16 14:21:49 +09:00

71 lines
1.9 KiB
Bash

#!/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..."
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"