跳轉到

部署指南

這一頁分成兩個層次:

  1. 現況下怎麼部署
  2. 正式環境上線前建議先改什麼

現況結論

這個專案目前比較適合:

  • 本機開發
  • 單機研究環境
  • 內網部署

若要直接上正式環境,還有幾個地方建議先補強。

最小可行部署

後端

直接啟動:

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:正式環境

建議至少先做以下改造:

  1. 把啟動時初始回測改成顯式背景任務或手動觸發
  2. 把回測歷史與結果更完整地 DB 化
  3. 導入 Alembic
  4. 把 CORS 改為環境變數控制
  5. 加入 logging / health check / startup check

建議補的部署檔

目前若要更正式,建議未來補:

  • Dockerfile
  • .env.example
  • docker-compose.yml
  • alembic.ini
  • alembic/

文件站部署建議

如果你的目標是讓專案文件本身變成網站,最省事的方式是:

GitHub Pages

優點:

  • 成本低
  • 跟 repo 綁定
  • 適合技術文件

Nginx 靜態站

優點:

  • 可控性高
  • 可內網部署
  • 適合公司內部文件站

最後建議

如果你現在的目標是:

  • 先讓文件完整
  • 先能穩定研究與內網使用

那最合理的順序是:

  1. 完成 MkDocs 文件站
  2. .env.example
  3. 補部署檢查清單
  4. 再做 Docker / Alembic / 正式化改造