#!/bin/bash

# TK-MP-Project Docker 실행 스크립트
# 사용법: ./docker-run.sh [환경] [명령]
# 환경: dev (기본), prod, synology
# 명령: up, down, build, logs, ps

set -e

# 기본값 설정
ENV=${1:-dev}
CMD=${2:-up}

# 환경별 설정 파일 경로
case $ENV in
    "dev"|"development")
        ENV_FILE="env.development"
        COMPOSE_FILE="docker-compose.yml"
        echo "🔧 개발 환경으로 실행합니다..."
        ;;
    "prod"|"production")
        ENV_FILE="env.production"
        COMPOSE_FILE="docker-compose.yml"
        echo "🚀 프로덕션 환경으로 실행합니다..."
        ;;
    "synology"|"nas")
        ENV_FILE="env.synology"
        COMPOSE_FILE="docker-compose.yml"
        echo "🏠 시놀로지 NAS 환경으로 실행합니다..."
        ;;
    *)
        echo "❌ 지원하지 않는 환경입니다: $ENV"
        echo "사용 가능한 환경: dev, prod, synology"
        exit 1
        ;;
esac

# 환경 파일 존재 확인
if [ ! -f "$ENV_FILE" ]; then
    echo "❌ 환경 파일을 찾을 수 없습니다: $ENV_FILE"
    exit 1
fi

# Docker Compose 파일 존재 확인
if [ ! -f "$COMPOSE_FILE" ]; then
    echo "❌ Docker Compose 파일을 찾을 수 없습니다: $COMPOSE_FILE"
    exit 1
fi

echo "📋 환경 파일: $ENV_FILE"
echo "🐳 Compose 파일: $COMPOSE_FILE"

# Docker Compose 명령 실행
case $CMD in
    "up")
        echo "🚀 컨테이너를 시작합니다..."
        docker-compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" up -d
        echo "✅ 컨테이너가 시작되었습니다!"
        echo ""
        echo "📊 서비스 상태:"
        docker-compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" ps
        ;;
    "down")
        echo "🛑 컨테이너를 중지합니다..."
        docker-compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" down
        echo "✅ 컨테이너가 중지되었습니다!"
        ;;
    "build")
        echo "🔨 이미지를 빌드합니다..."
        docker-compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" build
        echo "✅ 이미지 빌드가 완료되었습니다!"
        ;;
    "rebuild")
        echo "🔨 이미지를 재빌드합니다..."
        docker-compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" build --no-cache
        echo "✅ 이미지 재빌드가 완료되었습니다!"
        ;;
    "logs")
        echo "📋 로그를 확인합니다..."
        docker-compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" logs -f
        ;;
    "ps"|"status")
        echo "📊 서비스 상태:"
        docker-compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" ps
        ;;
    "restart")
        echo "🔄 컨테이너를 재시작합니다..."
        docker-compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" restart
        echo "✅ 컨테이너가 재시작되었습니다!"
        ;;
    *)
        echo "❌ 지원하지 않는 명령입니다: $CMD"
        echo "사용 가능한 명령: up, down, build, rebuild, logs, ps, restart"
        exit 1
        ;;
esac

echo ""
echo "🎯 사용법 예시:"
echo "  개발 환경 시작: ./docker-run.sh dev up"
echo "  프로덕션 환경 시작: ./docker-run.sh prod up"
echo "  시놀로지 환경 시작: ./docker-run.sh synology up"
echo "  로그 확인: ./docker-run.sh dev logs"
echo "  상태 확인: ./docker-run.sh dev ps"
