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

🐳 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 접속

  1. 브라우저에서 https://localhost:9443 접속
  2. 관리자 계정 생성 (username: admin, password: 설정)
  3. 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 사용

  1. 스택 메뉴로 이동

    • Portainer 대시보드 → Stacks → Add stack
  2. 스택 정보 입력

    • Name: stock-oracle
    • Build method: Git Repository 또는 Upload
  3. Git Repository 방법 (권장)

    Repository URL: https://github.com/your-repo/stock-oracle
    Repository reference: main
    Compose path: portainer/docker-compose.portainer.yml
    
  4. 환경 변수 설정

    SEC_EMAIL=your-email@example.com
    POSTGRES_PASSWORD=your_secure_password
    REDIS_PASSWORD=your_redis_password
    
  5. 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

🛠️ 관리 및 모니터링

Portainer에서 제공하는 기능

  1. 컨테이너 관리

    • 컨테이너 시작/중지/재시작
    • 로그 실시간 모니터링
    • 리소스 사용량 확인
  2. 볼륨 관리

    • 데이터 백업/복원
    • 볼륨 크기 모니터링
  3. 네트워크 관리

    • 네트워크 설정 확인
    • 컨테이너 간 통신 관리
  4. 스택 업데이트

    • 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"

🔧 문제 해결

일반적인 문제들

  1. 포트 충돌

    # 포트 사용 확인
    netstat -tlnp | grep :18001
    
    # 환경 변수에서 포트 변경
    API_PORT=18002
    
  2. 권한 문제

    # Docker 소켓 권한
    sudo chmod 666 /var/run/docker.sock
    
    # SSL 인증서 권한
    chmod 600 portainer/nginx/ssl/key.pem
    
  3. 메모리 부족

    # 메모리 사용량 확인
    docker stats
    
    # 불필요한 컨테이너 정리
    docker system prune -a
    

로그 확인 방법

# Portainer에서 로그 확인
Containers → 컨테이너 선택 → Logs

# 명령어로 로그 확인
docker logs stock-oracle-api
docker logs stock-oracle-postgres
docker logs stock-oracle-nginx

🔄 업데이트 및 백업

업데이트 방법

  1. Portainer → Stacks → stock-oracle → Editor
  2. Git Repository 방법: Pull and redeploy 클릭
  3. 또는 새 이미지로 수동 업데이트

백업 방법

# 데이터베이스 백업
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

🎉 배포 완료!

배포가 성공적으로 완료되면:

다음 단계

  1. 프로덕션 환경에서는 Let's Encrypt SSL 인증서 사용
  2. 도메인 설정 및 DNS 구성
  3. 모니터링 시스템 연동
  4. 자동 백업 스케줄 설정