c4e6aab7b2
- backend/ — FastAPI + JWT + 모든 REST 엔드포인트 - frontend/ — Next.js 14 + Tailwind + 7페이지 (대시보드/트레이드/거래소/자동매매/설정/내정보/로그인) - core_logic.py — 신호계산/알림 로직 분리 (기존 app_streamlit.py 에서 추출) - users_db.py + bcrypt 인증, exchange_keys.py + Fernet 암호화 - trades_db.py — 진입/청산 lifecycle 추적, signal_events raw 로그 - settings_db.py — 모든 운영 파라미터 DB 영속 저장 (RSI/거래량/펀딩비 임계값 포함) - docker-compose: frontend / backend / postgres + Traefik 라우팅 - assets/logo.svg — JUNGGOMOA 그라디언트 로고 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
43 lines
1.3 KiB
Bash
Executable File
43 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# 서버에서 직접 실행하는 배포 스크립트.
|
|
# 1. (Docker / docker compose 가 설치되어 있다고 가정)
|
|
# 2. 이미지 빌드 + 컨테이너 기동
|
|
# 3. 80 포트로 nginx 가 junggomoa.com 트래픽을 8501 streamlit 으로 프록시
|
|
set -euo pipefail
|
|
|
|
cd "$(dirname "$0")"
|
|
|
|
if ! command -v docker >/dev/null 2>&1; then
|
|
echo "[!] docker 가 설치되어 있지 않습니다. 먼저 설치하세요." >&2
|
|
exit 1
|
|
fi
|
|
|
|
# docker compose v2 (`docker compose`) 우선, 없으면 docker-compose v1 fallback
|
|
if docker compose version >/dev/null 2>&1; then
|
|
DC="docker compose"
|
|
elif command -v docker-compose >/dev/null 2>&1; then
|
|
DC="docker-compose"
|
|
else
|
|
echo "[!] docker compose / docker-compose 둘 다 없습니다. 설치 후 재시도." >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "[+] 이미지 빌드..."
|
|
$DC build
|
|
|
|
echo "[+] 컨테이너 기동..."
|
|
$DC up -d
|
|
|
|
echo
|
|
echo "[+] 상태:"
|
|
$DC ps
|
|
|
|
echo
|
|
echo "[+] 로그 (앱 마지막 30줄):"
|
|
$DC logs --tail=30 app || true
|
|
|
|
echo
|
|
echo "[OK] 배포 완료. 외부에서 http://junggomoa.com 으로 접속 확인하세요."
|
|
echo " (DNS 가 서버 IP 를 가리키고 있어야 함. 80 포트가 방화벽에서 열려있어야 함.)"
|
|
echo " HTTPS 는 별도 단계 — README.md 의 'HTTPS 발급' 섹션 참조."
|