# Local/self-hosted single-container run for the SET50 alternative-data platform. # Production (EasyPanel) builds from the Dockerfile directly; this compose file # adds a persistent volume so factor vintages, the dividend ledger, forward runs # and prices survive container recreate. services: set50: build: . image: set50-alternative-data:latest ports: - "8080:80" environment: # bind backend on all interfaces inside the container (nginx proxies /api) HOST: "0.0.0.0" PORT: "5000" PAPER_BIND_HOST: "0.0.0.0" # optional: make the dividend refresh faster for demos () # DIVIDEND_REFRESH_COOLDOWN_SECONDS: "300" volumes: - ./backend/data:/app/backend/data restart: unless-stopped healthcheck: test: ["CMD", "python", "-c", "import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://127.0.0.1/api/v1/dashboard/summary', timeout=4).status==200 else 1)"] interval: 30s timeout: 5s retries: 3 start_period: 10s