部署指南¶
這一頁分成兩個層次:
- 現況下怎麼部署
- 正式環境上線前建議先改什麼
現況結論¶
這個專案目前比較適合:
- 本機開發
- 單機研究環境
- 內網部署
若要直接上正式環境,還有幾個地方建議先補強。
最小可行部署¶
後端¶
直接啟動:
uv run python app.py
前端¶
目前前端比較像:
- Swagger / ReDoc
- 單一靜態 HTML 儀表板
trading_dashboard_advanced.html - 或未來你自己的正式前端
文件站¶
本專案可用 MkDocs 產生靜態文件網站:
uv add --dev mkdocs mkdocs-material
uv run mkdocs build
可部署到:
- GitHub Pages
- Netlify
- Vercel
- Nginx 靜態站
建議環境變數¶
SHIOAJI_API_KEY=...
SHIOAJI_SECRET_KEY=...
DB_TYPE=sqlite
SQLITE_PATH=./training_params.db
# 或 PostgreSQL
# DB_TYPE=postgresql
# DATABASE_URL=postgresql+psycopg2://USER:PASSWORD@HOST:PORT/DBNAME
STRATEGY_NAME=BollingerATRStrategy
OPTIMIZATION_WORKERS=4
正式部署前的風險¶
1. 啟動即有副作用¶
app.py 在 import / 啟動時就會:
- 初始化 quote adapter
- 讀 env
- 印 startup config
- 直接跑一次初始回測
這代表:
- 健康檢查可能變慢
- 若外部金鑰失效,服務可能起不來
- scale out 成本較高
2. 一般回測結果 heavily 依賴記憶體¶
一般回測的 cache 與狀態有相當一部分仍存在 process memory。
這代表:
- 重啟會失去部分快取
- 多實例不共享
- 容器水平擴展不自然
3. CORS 全開¶
目前 allow_origins=["*"]。
正式部署應改為明確 allowlist。
4. migration 非正式¶
目前 schema 變更由應用啟動時自動補。
正式部署建議改 Alembic。
5. 金鑰管理要統一¶
文件與程式碼盤點時,應確認:
- 所有外部資料源金鑰都改走 env
- 不把 secret 寫死在 repo
- 提供
.env.example
推薦部署層級¶
層級 A:研究 / 個人使用¶
- 後端:
uv run python app.py - DB:SQLite
- 文件:MkDocs 靜態站
適合:
- 自己開發
- 本地研究
- 單人使用
層級 B:內網服務¶
- 後端:FastAPI + Uvicorn
- 反向代理:Nginx
- DB:PostgreSQL
- 文件站:MkDocs 靜態站
適合:
- 團隊內使用
- 固定少量使用者
層級 C:正式環境¶
建議至少先做以下改造:
- 把啟動時初始回測改成顯式背景任務或手動觸發
- 把回測歷史與結果更完整地 DB 化
- 導入 Alembic
- 把 CORS 改為環境變數控制
- 加入 logging / health check / startup check
建議補的部署檔¶
目前若要更正式,建議未來補:
Dockerfile.env.exampledocker-compose.ymlalembic.inialembic/
文件站部署建議¶
如果你的目標是讓專案文件本身變成網站,最省事的方式是:
GitHub Pages¶
優點:
- 成本低
- 跟 repo 綁定
- 適合技術文件
Nginx 靜態站¶
優點:
- 可控性高
- 可內網部署
- 適合公司內部文件站
最後建議¶
如果你現在的目標是:
- 先讓文件完整
- 先能穩定研究與內網使用
那最合理的順序是:
- 完成 MkDocs 文件站
- 補
.env.example - 補部署檢查清單
- 再做 Docker / Alembic / 正式化改造