# 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/` 폴더에 보관됨**