You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.5 KiB
5.5 KiB
🐳 Portainer로 Stock Oracle 배포하기
📋 사전 준비사항
1. 시스템 요구사항
- Docker Engine 20.10+
- Docker Compose 2.0+
- 최소 4GB RAM
- 최소 10GB 디스크 공간
2. 필수 환경 변수 설정
# SEC API 이메일 (필수)
export SEC_EMAIL="your-email@example.com"
# Alpha Vantage API Key (선택사항)
export ALPHA_VANTAGE_API_KEY="your_key_here"
🚀 단계별 배포 가이드
Step 1: Portainer 설치
# Portainer 설치 스크립트 실행
./portainer/install-portainer.sh
# 또는 수동 설치
docker volume create portainer_data
docker run -d \
-p 8000:8000 \
-p 9443:9443 \
--name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
Step 2: Portainer 웹 UI 접속
- 브라우저에서
https://localhost:9443접속 - 관리자 계정 생성 (username: admin, password: 설정)
- Local Docker 환경 선택
Step 3: SSL 인증서 생성 (개발용)
./portainer/generate-ssl.sh
Step 4: 환경 변수 파일 설정
# 환경 변수 파일 복사
cp portainer/.env.portainer .env
# 환경 변수 편집
nano .env
# 반드시 변경해야 할 값들:
# - SEC_EMAIL: 실제 이메일 주소
# - POSTGRES_PASSWORD: 강력한 패스워드
# - REDIS_PASSWORD: Redis 패스워드
Step 5: Docker 이미지 빌드
# API 이미지 빌드
docker build -t stock-oracle-api:latest .
# 또는 Portainer에서 빌드
🎯 Portainer를 통한 스택 배포
방법 1: Portainer Web UI 사용
-
스택 메뉴로 이동
- Portainer 대시보드 → Stacks → Add stack
-
스택 정보 입력
- Name:
stock-oracle - Build method:
Git Repository또는Upload
- Name:
-
Git Repository 방법 (권장)
Repository URL: https://github.com/your-repo/stock-oracle Repository reference: main Compose path: portainer/docker-compose.portainer.yml -
환경 변수 설정
SEC_EMAIL=your-email@example.com POSTGRES_PASSWORD=your_secure_password REDIS_PASSWORD=your_redis_password -
Deploy the stack 클릭
방법 2: Docker Compose 직접 사용
# 스택 배포
docker-compose -f portainer/docker-compose.portainer.yml up -d
# 상태 확인
docker-compose -f portainer/docker-compose.portainer.yml ps
🔍 배포 확인
1. 서비스 상태 확인
Portainer Dashboard → Containers에서 다음 컨테이너들이 실행 중인지 확인:
- ✅ stock-oracle-postgres
- ✅ stock-oracle-redis
- ✅ stock-oracle-api
- ✅ stock-oracle-nginx
2. API 접속 테스트
# HTTP (리다이렉트)
curl http://localhost/docs
# HTTPS
curl -k https://localhost/docs
# API 테스트
curl -k https://localhost/api/v1/financial/data \
-H "Content-Type: application/json" \
-d '{"ticker":"AAPL","start_date":"2024-01-01","end_date":"2024-12-31","period_type":"quarterly"}'
3. 접속 URL
- API 문서: https://localhost/docs
- API 엔드포인트: https://localhost/api/v1/
- Portainer: https://localhost:9443
🛠️ 관리 및 모니터링
Portainer에서 제공하는 기능
-
컨테이너 관리
- 컨테이너 시작/중지/재시작
- 로그 실시간 모니터링
- 리소스 사용량 확인
-
볼륨 관리
- 데이터 백업/복원
- 볼륨 크기 모니터링
-
네트워크 관리
- 네트워크 설정 확인
- 컨테이너 간 통신 관리
-
스택 업데이트
- Git pull을 통한 자동 업데이트
- Rolling update 지원
유용한 Portainer 명령어
# 스택 재배포
curl -X POST "http://localhost:9000/api/stacks/1/git/redeploy" \
-H "X-API-Key: your-api-key"
# 컨테이너 재시작
curl -X POST "http://localhost:9000/api/endpoints/1/docker/containers/container-id/restart" \
-H "X-API-Key: your-api-key"
🔧 문제 해결
일반적인 문제들
-
포트 충돌
# 포트 사용 확인 netstat -tlnp | grep :18001 # 환경 변수에서 포트 변경 API_PORT=18002 -
권한 문제
# Docker 소켓 권한 sudo chmod 666 /var/run/docker.sock # SSL 인증서 권한 chmod 600 portainer/nginx/ssl/key.pem -
메모리 부족
# 메모리 사용량 확인 docker stats # 불필요한 컨테이너 정리 docker system prune -a
로그 확인 방법
# Portainer에서 로그 확인
Containers → 컨테이너 선택 → Logs
# 명령어로 로그 확인
docker logs stock-oracle-api
docker logs stock-oracle-postgres
docker logs stock-oracle-nginx
🔄 업데이트 및 백업
업데이트 방법
- Portainer → Stacks → stock-oracle → Editor
- Git Repository 방법: Pull and redeploy 클릭
- 또는 새 이미지로 수동 업데이트
백업 방법
# 데이터베이스 백업
docker exec stock-oracle-postgres pg_dump \
-U stock_oracle_user stock_oracle > backup.sql
# 볼륨 백업
docker run --rm -v stock-oracle-postgres-data:/data \
-v $(pwd):/backup alpine tar czf /backup/postgres-backup.tar.gz /data
🎉 배포 완료!
배포가 성공적으로 완료되면:
- 📊 API 문서: https://localhost/docs
- 🔧 Portainer 관리: https://localhost:9443
- 🧪 테스트 실행:
python tests/run_all_tests.py
다음 단계
- 프로덕션 환경에서는 Let's Encrypt SSL 인증서 사용
- 도메인 설정 및 DNS 구성
- 모니터링 시스템 연동
- 자동 백업 스케줄 설정