spectrun 是一個自架(self-hosted)單體服務,把你用 specflow 開發流程留下的紀錄,從 GitHub 拉下來視覺化成可讀的儀表板:
資料只留在你自己機器上(SQLite),不經過任何第三方。
spectrun 本身不產生資料 —— 它顯示的是 @virtualorz/specflow 這個開發流程 skill 在你 repo 裡留下的紀錄。沒有 specflow,spectrun 就沒有東西可看。
在你要追蹤的專案裡安裝 / 初始化 specflow:
npx @virtualorz/specflow init
之後用它的工作流推進每個變更(會在 repo 內產生 specflow/changes/NNNN-slug/{issue.md,design.md,task.md} 並各開一個 git 分支):
/spec:new → 建立提案(issue.md)
/spec:design → 產生設計(design.md)
/spec:run → 產生並執行任務(task.md)
/spec:close → 收尾並合併回主幹
把這些 specflow/ 內容 commit / push 到 GitHub 後,spectrun 就能讀取並呈現。
docker run -d \
--name spectrun \
-p 5971:5971 \
-v spectrun-data:/data \
virtualorz/spectrun:latest
開啟 **http://localhost:5971**。
服務在容器內以 Apache 監聽 5971(非 80);
-p 主機埠:5971可自行改主機側埠號。
容器把所有狀態寫在 /data:
| 檔案 | 用途 |
|---|---|
/data/app_key | Laravel APP_KEY(首次啟動自動產生,之後重用) |
/data/database.sqlite | SQLite 資料庫(使用者、追蹤專案、change 紀錄) |
請務必把 /data 掛成具名 volume 或主機目錄。 APP_KEY 被用來加密儲存你的 GitHub token;一旦 key 遺失或重新產生(例如沒掛 volume、容器重建),先前存的 token 將無法解密,必須重新到設定頁輸入。
# 用主機目錄持久化的範例
docker run -d -p 5971:5971 -v /srv/spectrun:/data <image>
http://localhost:5971,會被導向 設定頁(setup)。specflow/ 目錄)的 repo,儲存。specflow/changes 拉進來;之後也會每小時自動同步(見下)。PAT 需要能讀取目標 repo 的內容(讀 specflow/ 目錄與檔案):
repo,或 fine-grained token 對目標 repo 的 Contents: Read)。容器內以 supervisord 同時跑 Apache 與 Laravel 排程(php artisan schedule:work),其中 projects:sync 每小時自動同步所有追蹤專案的 specflow 紀錄 —— 不需要在主機另外設定 cron。
也可手動觸發一次:
docker exec spectrun php artisan projects:sync
image 已內建以下預設(一般情況不需更動):
| 變數 | 預設值 | 說明 |
|---|---|---|
APP_ENV | production | 執行環境 |
APP_DEBUG | false | 關閉除錯輸出 |
LOG_CHANNEL | stderr | log 導向容器 stdout/stderr |
DB_CONNECTION | sqlite | 資料庫驅動 |
DB_DATABASE | /data/database.sqlite | SQLite 檔(在持久 volume 上) |
APP_KEY | (自動) | 由 entrypoint 產生並存於 /data/app_key 重用 |
若你想自備固定的 APP_KEY,可在 docker run 時用 -e APP_KEY=base64:... 覆蓋(需自行確保與既有加密資料相容)。
Laravel 13 / PHP 8.3 · SQLite · Apache · 容器以 supervisord 管理 Apache + 排程。
Content type
Image
Digest
sha256:2681ca425…
Size
187.7 MB
Last updated
4 months ago
docker pull virtualorz/spectrun