1260 字
6 分鐘

Supabase 多 worktree 資料庫隔離:stack、連線端點與驗收

兩個 agent 已有不同 worktree,A 跑資料庫測試,B 的測試資料卻一起改變:先查兩邊實際使用的連線端點。Git worktree 隔開程式碼目錄,應用程式若仍載入相同的資料庫 URL,就仍在操作同一個環境。

Supabase 在 2026 年 10 月 14 日公告提供每個 worktree 一份本機專案的實驗性流程,CLI 起點為 v2.119.0。本文聚焦多環境連線驗收,沒有執行 Supabase CLI、啟動服務或重設資料庫;命令是依 10 月 17 日官方文件檢閱的操作範例。

先確認兩個 agent 有沒有不同的 stack 身分#

多本機專案文件以專案根目錄、Git branch 與可選的 stack 名稱組合身分。同 checkout、同分支的兩個 agent 不會因為聊天視窗不同,就自動得到兩個資料庫。

已有 Git worktree 工作流程時,可讓每個工作目錄各自啟動預設 stack。先在不含重要資料的測試專案,將下列設定加入既有 supabase/config.toml 的 [experimental] 區塊;不要重複建立同名 TOML table:

[experimental]
stack = true

從各自的 worktree 執行以下檢查:

Terminal window
supabase --version
supabase stack --help
supabase start
supabase status

版本與 help 要先通過,再啟動。舊設定中的固定 port 仍可能造成衝突;應依官方文件的 port 移除清單逐項處理,也要檢查環境變數是否指定固定 port。不要遇到衝突就刪資料庫。原本由預設引擎建立的本機資料不會因開啟 stack 自動複製過來,新環境沒有舊資料時應先確認引擎與身分。

核對「CLI 顯示的端點」與「App 真正讀到的端點」#

先在兩邊各自讀取 supabase status,再從 App 啟動流程確認實際載入的 API/資料庫 URL。不要把第一個 worktree 的 .env 整份複製到第二個後,就開始跑 migration。

驗收紀錄至少放入兩個工作目錄、branch、stack 身分,以及 API/資料庫端點的主機與 port。記錄時省略密碼和金鑰;status 輸出可能含有憑證,不適合整份貼到公開 issue。App 若另有測試用環境檔或測試 runner 覆寫,必須核對最後生效的值。

同一個專案也可以用命名 stack 區分 dev/test,但資料庫命令不是一律接受 --stack。需要操作命名環境時,先逐項查目標命令的本機/遠端與 URL 選項;不要把「已啟動 test」當成後續命令必定連到 test 的證據。初次導入可優先採每個 worktree 一個預設 stack,減少這層切換。

同一台機器多專案,先選 Docker#

官方 runtime 指南建議同機多專案使用 Docker/Podman,讓網路與檔案系統也分開。native 適合沒有容器引擎的 sandbox 或 CI;它共用主機 process table 與 file locks,不能把不同 port 當成容器隔離。

native 的支援平台是 Apple silicon 的 macOS 14 以上,以及符合需求的 Linux amd64/arm64;Windows 與 Intel Mac 應走 Docker。runtime 在建立本機專案時決定,不是下次啟動換個旗標,就會自動搬移既有資料。

如果任務只是替一個隔離 sandbox 提供資料庫,才評估以下官方入口:

Terminal window
supabase start --runtime native

這段尚未在本文環境執行。也不引用官方速度或記憶體數字來預測你的機器;需比較時,應分開量第一次下載、快取後啟動與實際服務請求。

用雙環境測試,證明資料與應用都沒接錯#

正式允許 agent 執行 migration 前,在兩份可丟棄的本機環境做一次驗收。以下是測試設計,請使用專屬測試資料表,不要拿工作中的資料當 fixture:

  1. A、B 各自透過該 App 的實際連線路徑寫入不同標記,例如 A 的 fixture-a、B 的 fixture-b。
  2. 分別讀回,確認每邊只看到自己的標記。再從資料庫端點讀取同一筆資料,比對 App 與資料庫觀測一致。
  3. 只修改 A 的標記,再從 B 重讀;B 必須維持原值。這一步能抓出 App 沿用另一份 .env 的情況。
  4. 停止並重新啟動 A,重新核對端點、資料及 B 的可用性。最後保存版本、runtime、工作目錄與測試結果。

如果只做到兩個 start 都成功,還不足以交付:真正要驗收的是各 agent 的 App、測試 runner 與資料庫操作都走向自己的環境。失敗時先保留紀錄,回頭查生效端點和 stack 身分;通過前不執行有資料破壞性的重設。

stack 仍是實驗性功能,旗標與輸出可能改變。團隊導入時固定驗證過的 CLI 版本,並把上述驗收加入更新流程;本文沒有驗證遠端 branching、既有資料移轉或完整 CI 執行。

參考資料:

Supabase:每個 agent 一份本機專案公告

Supabase:Running multiple local projects

Supabase:Docker and native runtimes

Supabase 多 worktree 資料庫隔離:stack、連線端點與驗收
https://laplusda.com/posts/supabase-worktree-local-stack-isolation/
作者
Zero
發佈於
2026-10-17
許可協議
CC BY-NC-SA 4.0