# TK-MP-Project Docker 가이드

## 🚀 빠른 시작

### 1. 개발 환경 실행
```bash
./docker-run.sh dev up
```

### 2. 프로덕션 환경 실행
```bash
./docker-run.sh prod up
```

### 3. 시놀로지 NAS 환경 실행
```bash
./docker-run.sh synology up
```

## 📋 사용 가능한 명령어

| 명령어 | 설명 |
|--------|------|
| `up` | 컨테이너 시작 (기본값) |
| `down` | 컨테이너 중지 |
| `build` | 이미지 빌드 |
| `rebuild` | 이미지 재빌드 (캐시 무시) |
| `logs` | 로그 실시간 확인 |
| `ps` 또는 `status` | 서비스 상태 확인 |
| `restart` | 컨테이너 재시작 |

## 🌍 환경별 설정

### 개발 환경 (dev)
- **포트**: 모든 서비스 외부 노출
  - Frontend: http://localhost:13000
  - Backend API: http://localhost:18000
  - PostgreSQL: localhost:5432
  - Redis: localhost:6379
  - pgAdmin: http://localhost:5050
- **특징**: 
  - 코드 실시간 반영 (Hot Reload)
  - 디버그 모드 활성화
  - 모든 로그 레벨 출력

### 프로덕션 환경 (prod)
- **포트**: Nginx를 통한 리버스 프록시
  - Web: http://localhost (Nginx)
  - HTTPS: https://localhost (SSL 설정 필요)
- **특징**:
  - 내부 서비스 포트 비노출
  - 최적화된 빌드
  - 로그 레벨 INFO
  - pgAdmin 비활성화

### 시놀로지 NAS 환경 (synology)
- **포트**: 포트 충돌 방지를 위한 커스텀 포트
  - Frontend: http://localhost:10173
  - Backend API: http://localhost:10080
  - PostgreSQL: localhost:15432
  - Redis: localhost:16379
  - pgAdmin: http://localhost:15050
- **특징**:
  - 명명된 볼륨 사용
  - 시놀로지 Container Manager 호환

## 🔧 환경 설정 파일

각 환경별 설정은 다음 파일에서 관리됩니다:

- `env.development` - 개발 환경 설정
- `env.production` - 프로덕션 환경 설정
- `env.synology` - 시놀로지 환경 설정

### 주요 환경 변수

```bash
# 배포 환경
DEPLOY_ENV=development|production|synology

# 포트 설정
FRONTEND_EXTERNAL_PORT=13000
BACKEND_EXTERNAL_PORT=18000
POSTGRES_EXTERNAL_PORT=5432

# 데이터베이스 설정
POSTGRES_DB=tk_mp_bom
POSTGRES_USER=tkmp_user
POSTGRES_PASSWORD=tkmp_password_2025

# 디버그 설정
DEBUG=true|false
LOG_LEVEL=DEBUG|INFO|WARNING|ERROR
```

## 🛠️ 사용 예시

### 개발 시작
```bash
# 개발 환경 시작
./docker-run.sh dev up

# 로그 확인
./docker-run.sh dev logs

# 상태 확인
./docker-run.sh dev ps
```

### 프로덕션 배포
```bash
# 이미지 빌드
./docker-run.sh prod build

# 프로덕션 시작
./docker-run.sh prod up

# 상태 확인
./docker-run.sh prod ps
```

### 시놀로지 NAS 배포
```bash
# 시놀로지 환경 시작
./docker-run.sh synology up

# 로그 확인
./docker-run.sh synology logs
```

### 컨테이너 관리
```bash
# 컨테이너 중지
./docker-run.sh dev down

# 컨테이너 재시작
./docker-run.sh dev restart

# 이미지 재빌드 (캐시 무시)
./docker-run.sh dev rebuild
```

## 🔍 트러블슈팅

### 포트 충돌 해결
환경 설정 파일에서 `*_EXTERNAL_PORT` 변수를 수정하세요.

### 볼륨 권한 문제
```bash
# 볼륨 삭제 후 재생성
docker volume prune
./docker-run.sh dev up
```

### 이미지 빌드 문제
```bash
# 캐시 없이 재빌드
./docker-run.sh dev rebuild
```

## 📁 파일 구조

```
TK-MP-Project/
├── docker-compose.yml          # 통합 Docker Compose 파일
├── docker-run.sh              # 실행 스크립트
├── env.development            # 개발 환경 설정
├── env.production             # 프로덕션 환경 설정
├── env.synology              # 시놀로지 환경 설정
├── docker-backup/            # 기존 파일 백업
│   ├── docker-compose.yml
│   ├── docker-compose.prod.yml
│   ├── docker-compose.synology.yml
│   └── docker-compose.override.yml
└── DOCKER-GUIDE.md           # 이 가이드 파일
```

## 🎯 마이그레이션 가이드

기존 Docker Compose 파일을 사용하던 경우:

1. **기존 컨테이너 중지**
   ```bash
   docker-compose down
   ```

2. **새로운 방식으로 시작**
   ```bash
   ./docker-run.sh dev up
   ```

3. **기존 파일은 `docker-backup/` 폴더에 보관됨**

