📝 RULES.md 업데이트: Docker 환경 구성 및 트러블슈팅 가이드 추가
Some checks failed
SonarQube Analysis / SonarQube Scan (push) Has been cancelled

- Docker 컨테이너 구성 및 실행 방법 명시
- 해결된 주요 문제들 문서화:
  * 프론트엔드 API 연결 오류 (10080 포트 문제)
  * 백엔드 데이터베이스 연결 실패 (localhost vs postgres)
  * 환경별 설정 관리 개선
- 실행 전 체크리스트 제공으로 향후 헷갈림 방지
This commit is contained in:
Hyungi Ahn
2025-08-01 13:46:37 +09:00
parent 7dbb742981
commit 28a1302cae

View File

@@ -6,9 +6,12 @@
## 🛠️ **기술 스택**
```
Frontend: React.js + Material-UI + Vite + React Router DOM
Backend: FastAPI + SQLAlchemy + Python
Frontend: React.js + Material-UI + Vite + React Router DOM + Nginx
Backend: FastAPI + SQLAlchemy + Python + Uvicorn
Database: PostgreSQL (운영 및 개발)
캐시: Redis
관리도구: pgAdmin4
컨테이너: Docker + Docker Compose
기타: Axios, XLSX (SheetJS), file-saver
```
@@ -28,6 +31,37 @@ TK-MP-Project/
└── database/ # DB 스키마/시드
```
## 🐳 **Docker 실행 환경**
### 컨테이너 구성
- **tk-mp-frontend**: React + Nginx (포트: 3000)
- **tk-mp-backend**: FastAPI + Uvicorn (포트: 8000)
- **tk-mp-postgres**: PostgreSQL (포트: 5432)
- **tk-mp-redis**: Redis (포트: 6379)
- **tk-mp-pgadmin**: pgAdmin4 (포트: 5050)
### 실행 방법
```bash
# 개발 환경
./scripts/dev.sh
# 또는
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d
# 프로덕션 환경
./scripts/prod.sh
# 또는
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
# 기본 환경
docker-compose up -d
```
### 중요한 설정 사항
- **API URL 설정**:
- 개발환경: `http://localhost:8000` (직접 접근)
- 프로덕션: `/api` (nginx 프록시를 통한 상대경로)
- **데이터베이스 연결**: `postgres:5432` (컨테이너명 사용, localhost 아님!)
- **환경변수**: `VITE_API_URL`로 API URL 오버라이드 가능
## 🗄️ **핵심 데이터베이스 스키마**
```sql
-- 핵심 테이블들
@@ -203,4 +237,50 @@ const purchaseQuantity = Math.ceil(bomQuantity / 5) * 5;
- 작업 상태는 'in-progress'와 'complete'를 명확히 표시
---
**마지막 업데이트**: 2024-12-20
## 🚨 **Docker 실행 관련 트러블슈팅**
### 해결된 주요 문제들 (2025.08.01)
1. **프론트엔드 API 연결 오류**
- **문제**: 빌드된 프론트엔드가 10080 포트로 API 요청
- **원인**: 환경변수 설정 누락으로 하드코딩된 포트 사용
- **해결**:
```bash
# Dockerfile에서 빌드 시 환경변수 주입
ARG VITE_API_URL=http://localhost:8000
ENV VITE_API_URL=$VITE_API_URL
# docker-compose.yml에서 환경변수 설정
environment:
- VITE_API_URL=${VITE_API_URL:-/api}
```
2. **백엔드 데이터베이스 연결 실패**
- **문제**: `psycopg2.OperationalError` - localhost:5432 연결 거부
- **원인**: 백엔드가 localhost로 DB 접근 시도 (Docker 컨테이너 내에서는 불가)
- **해결**:
```python
# backend/app/database.py 수정
DATABASE_URL = os.getenv(
"DATABASE_URL",
"postgresql://tkmp_user:tkmp_password_2025@postgres:5432/tk_mp_bom" # localhost → postgres
)
```
3. **환경별 설정 관리 개선**
- **문제**: 개발/프로덕션 환경 구분 없이 하드코딩
- **해결**: docker-compose 파일 분리
```bash
docker-compose.yml # 기본 설정
docker-compose.dev.yml # 개발 환경 오버라이드
docker-compose.prod.yml # 프로덕션 환경 오버라이드
```
### 실행 전 체크리스트
- [ ] Docker 및 Docker Compose 설치 확인
- [ ] 모든 컨테이너 정상 실행 확인: `docker-compose ps`
- [ ] 백엔드 API 문서 접근 가능: http://localhost:8000/docs
- [ ] 프론트엔드 로딩 확인: http://localhost:3000
- [ ] 데이터베이스 연결 확인: pgAdmin (http://localhost:5050)
**마지막 업데이트**: 2025-08-01 (Docker 환경 구성 완료)