160 lines
3.4 KiB
Markdown
160 lines
3.4 KiB
Markdown
# 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**
|