部署至 Mastra platform
mastra deploy 是將 Mastra 應用程式發佈至 Mastra platform 的單一指令。
此指令會在納入任何內容前建置並驗證專案;第一次執行時也會建立 platform 專案與環境、進行部署、串流建置記錄,並在部署開始提供流量服務後列出公開 URL。
mastra deploy
本頁說明統一部署流程。先前分開的指令 mastra server deploy 與 mastra studio deploy 仍然可用,但建議使用 mastra deploy。
開始之前「開始之前」的直接連結
你需要一個 Mastra 應用程式及 Mastra platform 帳戶。如果尚未驗證身分,CLI 會在第一次使用時提示你登入。
本機 .env 檔案並非必要。部署時會直接使用儲存在 platform 上的環境變數,託管資料庫等受管理資源也會注入自己的變數。只有想在其上疊加本機值時,才需傳入 --env-file。
第一次部署「第一次部署」的直接連結
在專案目錄中執行:
mastra deploy第一次執行時,CLI 會提示你建立 platform 專案(以
package.json命名)與production環境。接受提示,或傳入--yes直接接受預設值而不確認。CLI 會在發佈任何內容前執行部署前檢查。若儲存空間會回退至本機檔案路徑(在 platform 的暫時性檔案系統中無法留存),通常會阻擋部署:
file:./mastra.db will be used at runtime because TURSO_DATABASE_URL is not setCLI 不會直接回報錯誤,而會讓你就地修正:
Preflight needs TURSO_DATABASE_URL for the production environment. Create a managed turso database now and attach it? (Y/n)接受提示後,佈建只需幾秒;資料庫連線變數會自動注入部署,完全不必複製至
.env檔案。若拒絕,或在非互動式 shell(CI、--yes)中執行,CLI 會回復先前的行為:列出要自行執行的確切指令。mastra env db create production --kind turso環境 slug(上述
production)會符合 CLI 原本要部署的環境。這一點很重要,因為專案有多個環境時,在非互動式 shell 中執行mastra env db create必須提供環境引數。備註如果部署前檢查回報的是硬式編碼的本機路徑(
Build contains a host-local storage URL),便無法提供就地修正。請先以環境變數保護路徑,讓該檔案只在本機開發期間使用:src/mastra/index.tsnew LibSQLStore({id: 'mastra-storage',// Uses the hosted database when deployed, a local file during developmenturl: process.env.TURSO_DATABASE_URL ?? 'file:./mastra.db',authToken: process.env.TURSO_AUTH_TOKEN,})再次執行
mastra deploy。通過部署前檢查後,建置會上傳,CLI 也會持續串流建置記錄,直到部署上線。完整建置和部署預計需時 30 秒至數分鐘。只有新版本開始提供流量服務後,才會列出成功訊息。使用 CLI 列出的 URL 驗證部署。附加
/api/agents,確認它會傳回 Agent 的 JSON 清單。警告對外公開端點前,請先設定驗證。
第一次部署會寫入 .mastra-project.json 檔案,將你的目錄連結至 platform 專案。請提交此檔案,讓後續部署、CI 執行及 mastra env 指令不必提供額外旗標,也能指向同一專案。
部署至其他環境「部署至其他環境」的直接連結
mastra deploy 預設以 production 環境為目標。傳入 --env 可指定其他環境。如果環境尚不存在,CLI 會提示你建立:
mastra deploy --env staging
每個環境都有各自的 URL 與環境變數,也可以擁有自己的託管資料庫。
如需完整模型,請參閱環境。
選擇區域「選擇區域」的直接連結
部署建立新環境時,傳入 --region 可控制執行位置。請使用 us 或 eu 簡寫:
mastra deploy --env production --region eu
區域會在建立環境時固定。附加至環境的資料庫會自動放在靠近該環境區域的位置,可觀測性資料則會路由至符合環境資料駐留區域的擷取區域。如需支援區域、資料庫位置及可觀測性共置的完整清單,請參閱區域。
部署前檢查「部署前檢查」的直接連結
部署前檢查會在納入任何內容前驗證建置輸出,且只會標示自有程式碼中的問題:
-
本機儲存路徑:會直接阻擋。每次部署都會遺失檔案型儲存空間(例如
file:./mastra.db)。若路徑由環境變數保護,且該變數已在本機設定、儲存於 platform,或由受管理資料庫提供,即可通過部署前檢查:src/mastra/storage.tsimport { LibSQLStore } from '@mastra/libsql'export const storage = new LibSQLStore({id: 'mastra-storage',// Uses the hosted database when deployed, a local file during developmenturl: process.env.TURSO_DATABASE_URL ?? 'file:./mastra.db',authToken: process.env.TURSO_AUTH_TOKEN,}) -
缺少環境變數:程式碼讀取的變數沒有任何來源提供時會顯示警告。只由程式庫程式碼參照的變數不包含在內。
遇到部署前檢查阻擋時,建議修正原因,通常是附加託管資料庫或將變數儲存至 platform。--skip-preflight 是緊急避用選項,但會略過用於防止部署失敗的檢查。
執行檢查但不部署:
mastra lint --preflight
mastra lint 只能讀取本機環境檔案,無法得知儲存在 platform 或由受管理資料庫注入的變數。因此,即使 lint 仍回報錯誤,部署仍可能通過部署前檢查。
環境變數「環境變數」的直接連結
部署會從三個來源解析環境變數:
- 受管理變數:由託管資料庫等 platform 資源注入(例如
TURSO_DATABASE_URL)。這些變數由 platform 定義,無法編輯。 - 已儲存變數:透過控制面板儲存在專案或環境中。每次部署都會直接使用,不需要本機檔案。
- 本機環境檔案:部署會在其上疊加明確指定的
--env-file,或目前的.env與.env.local檔案。
mastra deploy --env staging --env-file .env.staging
若要變更執行中服務的變數而不重新部署,請在控制面板更新後執行 mastra env restart。
專案解析「專案解析」的直接連結
每次部署都會依下列順序解析目標專案:
MASTRA_PROJECT_ID環境變數--project <name|slug|id>旗標- 目前目錄中的
.mastra-project.json檔案
在 CI 中,請設定 MASTRA_PROJECT_ID 和 MASTRA_API_TOKEN,並傳入 --yes:
mastra deploy --env production --yes