核心概念
最後更新
本頁說明 PodRun 如何識別一個部署:UID、遠端目錄與本地專案目錄的推導規則。
本地專案目錄
依下列優先序決定,結果轉成絕對路徑:
| 優先 | 來源 |
|---|---|
| 1 | --folder=<path> 或 --folder <path> |
| 2 | -f <file> 所在目錄(dir != "." 時) |
| 3 | 以 ./ 或 / 開頭且存在的目錄位置參數 |
| 4 | 當前工作目錄 |
目錄必須存在,且含 docker-compose.yml 或 docker-compose.yaml,否則 command.New() 回傳錯誤。
部署 UID
uid = md5("<MAC>@<本地絕對路徑>")
- MAC 取第一個非 loopback 且有硬體位址的網卡;取不到時改用 Hostname
- 同一台機器、同一個專案路徑永遠得到同一個 UID
-u <uid>可覆寫;覆寫只影響紀錄用的 UID,不影響遠端目錄
遠端目錄
/home/podrun/<本地目錄名>_<雜湊前 8 碼>
雜湊與 UID 相同來源,因此不同機器、或同機器不同路徑的同名專案不會互相覆蓋。根目錄 /home/podrun 為固定值,與 PODRUN_USERNAME 無關。
指令分派
| 指令 | 路徑 | 行為 |
|---|---|---|
up |
up() |
同步、改寫 compose、重建容器、回報 API |
clear |
clear() |
移除容器、Volume、映像與遠端目錄 |
down/ps/logs/restart/exec/build |
runCMD() |
在遠端目錄執行 podman compose <args> |
domain/deploy |
main |
無動作(未完成) |
| 其他 | — | unsupported command |
RemoteArgs 的第一個元素即指令名稱;-d、-f <檔名> 與其餘參數原樣轉送給 podman compose。
前景與背景
-d:容器在背景啟動,完成後印出 Port 對應與 Pod 資訊- 未加
-d:up在前景跟著 compose 輸出;遠端以trap cleanup INT TERM包裝,Ctrl+C 會執行podman compose down