Files
vault-dash/scripts/entrypoint.sh
Bu5hm4nn 00a68bc767 Initial commit: Vault Dashboard for options hedging
- FastAPI + NiceGUI web application
- QuantLib-based Black-Scholes pricing with Greeks
- Protective put, laddered, and LEAPS strategies
- Real-time WebSocket updates
- TradingView-style charts via Lightweight-Charts
- Docker containerization
- GitLab CI/CD pipeline for VPS deployment
- VPN-only access configuration
2026-03-21 19:21:40 +01:00

71 lines
1.7 KiB
Bash
Executable File

#!/bin/sh
set -eu
APP_MODULE="${APP_MODULE:-app.main:app}"
APP_HOST="${APP_HOST:-0.0.0.0}"
APP_PORT="${APP_PORT:-8000}"
APP_ENV="${APP_ENV:-production}"
WORKERS="${UVICORN_WORKERS:-1}"
REDIS_WAIT_TIMEOUT="${REDIS_WAIT_TIMEOUT:-30}"
wait_for_redis() {
if [ -z "${REDIS_URL:-}" ]; then
echo "REDIS_URL not set, skipping Redis wait"
return 0
fi
echo "Waiting for Redis: ${REDIS_URL}"
python - <<'PY'
import os
import sys
import time
from urllib.parse import urlparse
redis_url = os.environ.get("REDIS_URL", "")
timeout = int(os.environ.get("REDIS_WAIT_TIMEOUT", "30"))
parsed = urlparse(redis_url)
host = parsed.hostname or "redis"
port = parsed.port or 6379
deadline = time.time() + timeout
while time.time() < deadline:
try:
import socket
with socket.create_connection((host, port), timeout=2):
print(f"Redis is reachable at {host}:{port}")
raise SystemExit(0)
except OSError:
time.sleep(1)
print(f"Timed out waiting for Redis at {host}:{port}", file=sys.stderr)
raise SystemExit(1)
PY
}
run_migrations() {
if [ "${RUN_MIGRATIONS:-0}" != "1" ]; then
echo "RUN_MIGRATIONS disabled, skipping"
return 0
fi
if [ -f alembic.ini ] && command -v alembic >/dev/null 2>&1; then
echo "Running Alembic migrations"
alembic upgrade head
return 0
fi
if [ -f manage.py ]; then
echo "Running Django migrations"
python manage.py migrate --noinput
return 0
fi
echo "No supported migration command found, skipping"
}
wait_for_redis
run_migrations
echo "Starting application on ${APP_HOST}:${APP_PORT}"
exec python -m uvicorn "${APP_MODULE}" --host "${APP_HOST}" --port "${APP_PORT}" --workers "${WORKERS}"