部署失敗排除
版本失敗時,先在版本頁看原因。內容被拒收就修正後重新上傳;平台出錯就直接重試。
內容被拒收#
| 你看到的 | 原因 | 怎麼修 |
|---|---|---|
找不到 index.html | 壓縮的是資料夾本身,不是資料夾裡的內容。 | 進到資料夾裡再壓縮,讓 index.html 在最上層。 |
| 檔案裡有密鑰 | 上傳的內容裡有像 API 金鑰或權杖的字串。 | 從檔案移除,換一把新的金鑰,改在 App 的「設定」輸入,再重新上傳。 |
映像檔沒有 CMD | Dockerfile 沒有啟動指令。 | 加上 CMD 或 ENTRYPOINT。 |
USER 不存在 | Dockerfile 指定了映像檔裡沒有的使用者。 | 改用數字 uid,或映像檔裡已有的使用者,例如 node。 |
| 推送被拒,不是 amd64 | 在 Apple 晶片的 Mac 上建置成了 arm64。 | 用 docker build --platform linux/amd64 重新建置。 |
| 嚴重漏洞 | 映像檔裡的套件有已知的嚴重漏洞。 | 把套件升級到掃描結果寫的修正版本,或換成已包含該版本的新基底映像檔。 |
等待確認#
有檢查項目設成「會先問過你」並且找到問題時,版本會停在「等待確認」。看過掃描結果後,你可以決定照樣發佈。高風險漏洞就屬於這一類,修法和嚴重漏洞相同,升級之後提示才會消失。
版本一直沒有就緒#
建置成功、也上線了,但「執行」分頁的執行個體一直沒有就緒,多半是通訊埠的問題:伺服器沒有監聽平台給的通訊埠。
- 看版本頁有沒有
imagePortsAmbiguous提示。 - 讓伺服器監聽環境變數
PORT,或到「設定 › 執行設定 › 通訊埠」填伺服器實際監聽的通訊埠。 - 按「重新啟動服務」。
啟動後不斷重新啟動#
最常見的原因是程式寫入了 /tmp 以外的路徑,而檔案系統是唯讀的。把寫入位置改到 /tmp,見容器執行合約。
平台出錯#
失敗原因是平台本身時,不需要修改內容,也不用重新上傳,直接重試同一個版本。
還是找不到原因#
- 到「執行」分頁看執行個體的狀態和最近的記錄。
- 到映像檔的「檢查」分頁看平台留下的提示。
- 請已連接 Agent Lab MCP 的 AI 工具讀部署狀態幫你判斷。它讀到的失敗原因和這一頁的代碼相同。