quant-web/docker-compose.yml
epistemophiliac b5db15d6ab Initial QuantTrade stack for Coolify deployment.
Streamlit + VectorBT dashboard, Parquet harvester with nightly cron, Authentik header auth, SQLite strategy persistence, and Bugsink telemetry.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-19 00:46:51 -04:00

74 lines
2.2 KiB
YAML

services:
data-seed:
build:
context: .
dockerfile: Dockerfile.harvester
exclude_from_hc: true
restart: "no"
environment:
- 'BUGSINK_DSN=${BUGSINK_DSN:-}'
- 'APP_ENV=${APP_ENV:-production}'
- 'APP_RELEASE=${APP_RELEASE:-quant-web@1.0.0}'
- 'CORE_TICKERS=${CORE_TICKERS:-SPY,QQQ,AAPL,MSFT,GOOGL,AMZN,NVDA,META,IWM,TLT}'
- 'SEED_YEARS=${SEED_YEARS:-5}'
- 'PARQUET_DIR=/data/parquet'
- 'TZ=America/New_York'
volumes:
- 'parquet-data:/data/parquet'
entrypoint: ["bash", "-c"]
command:
- >
if [ -f /data/parquet/.seed_complete ]; then echo "Parquet seed already present"; exit 0; fi;
python /app/sync.py --seed;
touch /data/parquet/.seed_complete;
echo "Seed finished";
harvester:
build:
context: .
dockerfile: Dockerfile.harvester
restart: unless-stopped
depends_on:
data-seed:
condition: service_completed_successfully
environment:
- 'BUGSINK_DSN=${BUGSINK_DSN:-}'
- 'APP_ENV=${APP_ENV:-production}'
- 'APP_RELEASE=${APP_RELEASE:-quant-web@1.0.0}'
- 'CORE_TICKERS=${CORE_TICKERS:-SPY,QQQ,AAPL,MSFT,GOOGL,AMZN,NVDA,META,IWM,TLT}'
- 'SEED_YEARS=${SEED_YEARS:-5}'
- 'PARQUET_DIR=/data/parquet'
- 'TZ=America/New_York'
volumes:
- 'parquet-data:/data/parquet'
streamlit:
build:
context: .
dockerfile: Dockerfile
restart: unless-stopped
depends_on:
data-seed:
condition: service_completed_successfully
environment:
- SERVICE_URL_STREAMLIT_8501
- 'BUGSINK_DSN=${BUGSINK_DSN:-}'
- 'APP_ENV=${APP_ENV:-production}'
- 'APP_RELEASE=${APP_RELEASE:-quant-web@1.0.0}'
- 'CORE_TICKERS=${CORE_TICKERS:-SPY,QQQ,AAPL,MSFT,GOOGL,AMZN,NVDA,META,IWM,TLT}'
- 'PARQUET_DIR=/data/parquet'
- 'STRATEGY_DB_PATH=/data/strategies/strategies.db'
- 'DEV_USER=${DEV_USER:-anonymous}'
volumes:
- 'parquet-data:/data/parquet'
- 'strategy-data:/data/strategies'
healthcheck:
test: ['CMD-SHELL', 'curl -sf http://127.0.0.1:8501/_stcore/health || exit 1']
interval: 30s
timeout: 5s
start_period: 30s
retries: 3
volumes:
parquet-data:
strategy-data: