#!/bin/bash # TK-MP-Project Docker 실행 스크립트 # 환경별로 적절한 Docker Compose 설정을 사용하여 실행 set -e # 색상 정의 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # 도움말 함수 show_help() { echo -e "${BLUE}TK-MP-Project Docker 실행 스크립트${NC}" echo "" echo "사용법: $0 [환경] [명령]" echo "" echo "환경:" echo " dev 개발 환경 (기본값)" echo " prod 프로덕션 환경" echo " synology 시놀로지 NAS 환경" echo "" echo "명령:" echo " up 서비스 시작 (기본값)" echo " down 서비스 중지" echo " restart 서비스 재시작" echo " logs 로그 확인" echo " build 이미지 다시 빌드" echo " status 서비스 상태 확인" echo "" echo "예시:" echo " $0 # 개발 환경으로 시작" echo " $0 dev up # 개발 환경으로 시작" echo " $0 prod up # 프로덕션 환경으로 시작" echo " $0 synology up # 시놀로지 환경으로 시작" echo " $0 dev logs # 개발 환경 로그 확인" echo " $0 dev down # 개발 환경 중지" } # 환경 설정 ENVIRONMENT=${1:-dev} COMMAND=${2:-up} # 환경별 Docker Compose 파일 설정 case $ENVIRONMENT in dev|development) COMPOSE_FILES="-f docker-compose.yml -f docker-compose.override.yml" ENV_NAME="개발" ;; prod|production) COMPOSE_FILES="-f docker-compose.yml -f docker-compose.prod.yml" ENV_NAME="프로덕션" ;; synology|nas) COMPOSE_FILES="-f docker-compose.yml -f docker-compose.synology.yml" ENV_NAME="시놀로지" ;; help|-h|--help) show_help exit 0 ;; *) echo -e "${RED}❌ 알 수 없는 환경: $ENVIRONMENT${NC}" echo "사용 가능한 환경: dev, prod, synology" exit 1 ;; esac # .env 파일 확인 if [ ! -f .env ]; then echo -e "${YELLOW}⚠️ .env 파일이 없습니다. env.example을 복사하여 .env 파일을 생성합니다.${NC}" cp env.example .env echo -e "${GREEN}✅ .env 파일이 생성되었습니다. 필요시 설정을 수정하세요.${NC}" fi # 명령 실행 echo -e "${BLUE}🐳 TK-MP-Project ${ENV_NAME} 환경 ${COMMAND} 실행${NC}" echo "Docker Compose 파일: $COMPOSE_FILES" echo "" case $COMMAND in up|start) echo -e "${GREEN}🚀 서비스를 시작합니다...${NC}" docker-compose $COMPOSE_FILES up -d echo "" echo -e "${GREEN}✅ 서비스가 시작되었습니다!${NC}" echo "" echo "접속 주소:" case $ENVIRONMENT in dev|development) echo " - 프론트엔드: http://localhost:13000" echo " - 백엔드 API: http://localhost:18000" echo " - API 문서: http://localhost:18000/docs" echo " - pgAdmin: http://localhost:5050" ;; prod|production) echo " - 웹사이트: http://localhost" echo " - HTTPS: https://localhost (SSL 설정 시)" ;; synology|nas) echo " - 프론트엔드: http://localhost:10173" echo " - 백엔드 API: http://localhost:10080" echo " - API 문서: http://localhost:10080/docs" echo " - pgAdmin: http://localhost:15050" ;; esac ;; down|stop) echo -e "${YELLOW}🛑 서비스를 중지합니다...${NC}" docker-compose $COMPOSE_FILES down echo -e "${GREEN}✅ 서비스가 중지되었습니다.${NC}" ;; restart) echo -e "${YELLOW}🔄 서비스를 재시작합니다...${NC}" docker-compose $COMPOSE_FILES restart echo -e "${GREEN}✅ 서비스가 재시작되었습니다.${NC}" ;; logs) echo -e "${BLUE}📋 로그를 확인합니다...${NC}" docker-compose $COMPOSE_FILES logs -f ;; build) echo -e "${BLUE}🔨 이미지를 다시 빌드합니다...${NC}" docker-compose $COMPOSE_FILES build --no-cache echo -e "${GREEN}✅ 빌드가 완료되었습니다.${NC}" ;; status|ps) echo -e "${BLUE}📊 서비스 상태를 확인합니다...${NC}" docker-compose $COMPOSE_FILES ps ;; *) echo -e "${RED}❌ 알 수 없는 명령: $COMMAND${NC}" echo "사용 가능한 명령: up, down, restart, logs, build, status" exit 1 ;; esac