部署紀錄
最後更新
本頁說明 CLI 在每次操作時送給 API Server 的部署資訊與操作紀錄,以及 dismiss 旗標的轉換。
回報時機
| 函式 | 呼叫時機 | API | 失敗處理 |
|---|---|---|---|
removePod() |
up 清掉舊容器後、clear 開始時、down 結束後 |
POST /api/pod/update/:uid,body {"dismiss": 1} |
忽略 |
upsertPod() |
up 結束時 |
POST /api/pod/upsert |
回傳錯誤,up 視為失敗 |
recordPod() |
每個指令結束時,以及同步時 | POST /api/pod/record/insert |
忽略 |
CLI 固定連往 http://localhost:8080,API Server 未啟動時 up 會在最後一步回報 failed to upsert pod,但遠端容器已經啟動。
紀錄內容
records.content 的值:
| 值 | 來源 |
|---|---|
sync |
遠端目錄為空,首次同步 |
overwrite |
差異預覽後確認覆寫 |
up |
up 完成 |
clear |
clear 完成 |
down/ps/logs/restart/exec/build |
轉送指令完成,值為指令名稱 |
每筆紀錄另存執行 CLI 的主機名稱與第一個非 loopback IPv4。records.pod_id 以 uid 查 pods.id 寫入,且欄位為 NOT NULL;首次部署的 sync 紀錄發生在 pods 寫入之前,查不到 pods.id,寫入會失敗並被忽略。
dismiss 狀態
stateDiagram-v2
[*] --> 有效: up(upsert)
有效 --> 已移除: down/clear/重新 up 前清理
已移除 --> 有效: up(upsert 重設 dismiss=0)
已移除 --> [*]
GET /api/pod/list 只列出 dismiss = 0 的部署。status 欄位由 CLI 寫入 starting,目前不會更新為其他值。
資料庫位置
| 條件 | 路徑 |
|---|---|
設定 DB_PATH |
DB_PATH 的值 |
存在 /.dockerenv |
/data/database.db |
| 其他 | ~/.podrun/database.db,目錄不存在時自動建立 |
資料表結構見 HTTP API。