# Asset Pilot - Docker Edition 🐳 Docker μ»¨ν…Œμ΄λ„ˆ 기반 μžμ‚° λͺ¨λ‹ˆν„°λ§ μ‹œμŠ€ν…œ ## πŸ“¦ ꡬ성 이 ν”„λ‘œμ νŠΈλŠ” 2개의 λ…λ¦½λœ Docker μ»¨ν…Œμ΄λ„ˆλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€: 1. **PostgreSQL μ»¨ν…Œμ΄λ„ˆ** (`asset_pilot_db`) - λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„ - 포트: 5432 - λ³Όλ₯¨: `postgres_data` 2. **Asset Pilot μ•± μ»¨ν…Œμ΄λ„ˆ** (`asset_pilot_app`) - FastAPI μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ - 포트: 8000 - μ‹€μ‹œκ°„ 데이터 μˆ˜μ§‘ 및 제곡 ## πŸš€ λΉ λ₯Έ μ‹œμž‘ ### μžλ™ μ„€μΉ˜ (ꢌμž₯) ```bash # μ••μΆ• ν•΄μ œ tar -xzf asset_pilot_docker.tar.gz cd asset_pilot_docker # μžλ™ μ„€μΉ˜ 슀크립트 μ‹€ν–‰ bash start.sh ``` ### μˆ˜λ™ μ„€μΉ˜ ```bash # 1. ν™˜κ²½ λ³€μˆ˜ μ„€μ • nano .env # DB_PASSWORDλ₯Ό μ›ν•˜λŠ” λΉ„λ°€λ²ˆν˜Έλ‘œ λ³€κ²½ # 2. Docker μ»¨ν…Œμ΄λ„ˆ μ‹œμž‘ docker compose up -d # 3. λ°μ΄ν„°λ² μ΄μŠ€ μ΄ˆκΈ°ν™” docker compose exec app python init_db.py # 4. λΈŒλΌμš°μ €μ—μ„œ 접속 # http://[IPμ£Όμ†Œ]:8000 ``` ## πŸ“ 디렉토리 ꡬ쑰 ``` asset_pilot_docker/ β”œβ”€β”€ app/ # μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œ β”‚ β”œβ”€β”€ calculator.py β”‚ β”œβ”€β”€ database.py β”‚ β”œβ”€β”€ fetcher.py β”‚ └── models.py β”œβ”€β”€ static/ # 정적 파일 β”‚ β”œβ”€β”€ css/ β”‚ └── js/ β”œβ”€β”€ templates/ # HTML ν…œν”Œλ¦Ώ β”‚ └── index.html β”œβ”€β”€ docker-compose.yml # Docker Compose μ„€μ • β”œβ”€β”€ Dockerfile # μ•± μ»¨ν…Œμ΄λ„ˆ 이미지 β”œβ”€β”€ .env # ν™˜κ²½ λ³€μˆ˜ β”œβ”€β”€ main.py # FastAPI 메인 β”œβ”€β”€ init_db.py # DB μ΄ˆκΈ°ν™” β”œβ”€β”€ import_csv.py # CSV κ°€μ Έμ˜€κΈ° β”œβ”€β”€ start.sh # μžλ™ μ„€μΉ˜ 슀크립트 └── DOCKER_GUIDE.md # 상세 κ°€μ΄λ“œ ``` ## πŸ”§ μ£Όμš” λͺ…λ Ήμ–΄ ### μ»¨ν…Œμ΄λ„ˆ 관리 ```bash # μ‹œμž‘ docker compose up -d # 쀑지 docker compose down # μž¬μ‹œμž‘ docker compose restart # μƒνƒœ 확인 docker compose ps # 둜그 보기 docker compose logs -f ``` ### 데이터 관리 ```bash # DB λ°±μ—… docker compose exec postgres pg_dump -U asset_user asset_pilot > backup.sql # DB 볡원 cat backup.sql | docker compose exec -T postgres psql -U asset_user -d asset_pilot # CSV κ°€μ Έμ˜€κΈ° docker cp user_assets.csv asset_pilot_app:/app/ docker compose exec app python import_csv.py user_assets.csv ``` ## 🌐 접속 ``` http://localhost:8000 # 둜컬 http://[IPμ£Όμ†Œ]:8000 # λ„€νŠΈμ›Œν¬ ``` ## πŸ“š λ¬Έμ„œ - **DOCKER_GUIDE.md** - Docker 상세 μ„€μΉ˜ 및 관리 κ°€μ΄λ“œ - 문제 ν•΄κ²°, λ°±μ—…, μ—…λ°μ΄νŠΈ 방법 포함 ## πŸ” λ³΄μ•ˆ - `.env` νŒŒμΌμ— λΉ„λ°€λ²ˆν˜Έ μ €μž₯ (κΆŒν•œ: 600) - PostgreSQL은 λ‚΄λΆ€ λ„€νŠΈμ›Œν¬λ§Œ μ ‘κ·Ό κ°€λŠ₯ - λ°©ν™”λ²½μ—μ„œ ν•„μš”ν•œ 포트만 개방 ## πŸ†˜ 문제 ν•΄κ²° ### μ»¨ν…Œμ΄λ„ˆκ°€ μ‹œμž‘λ˜μ§€ μ•ŠμŒ ```bash docker compose logs ``` ### λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²° 였λ₯˜ ```bash docker compose exec postgres pg_isready -U asset_user -d asset_pilot ``` ### 포트 좩돌 ```bash # docker-compose.ymlμ—μ„œ 포트 λ³€κ²½ # "8001:8000" 으둜 μˆ˜μ • ``` ## πŸ“Š μ‹œμŠ€ν…œ μš”κ΅¬μ‚¬ν•­ - Docker 20.10+ - Docker Compose 2.0+ - μ΅œμ†Œ 2GB RAM - μ΅œμ†Œ 5GB λ””μŠ€ν¬ 곡간 ## 🎯 νŠΉμ§• βœ… λ…λ¦½λœ μ»¨ν…Œμ΄λ„ˆλ‘œ μ‹œμŠ€ν…œ 격리 βœ… ν•œ 번의 λͺ…λ ΉμœΌλ‘œ 전체 μ‹œμŠ€ν…œ μ‹€ν–‰ βœ… μ‰¬μš΄ λ°±μ—… 및 볡ꡬ βœ… μ—…λ°μ΄νŠΈ 및 λ‘€λ°± κ°„νŽΈ βœ… 개발/ν”„λ‘œλ•μ…˜ ν™˜κ²½ 일관성 --- **Asset Pilot Docker Edition v1.0**