從 Fly.io 遷移
本指南將帶您逐步將應用程式從 Fly.io 遷移到 Zeabur。無論您執行的是 Docker 應用程式、Web 服務,還是搭配 Postgres 資料庫的全端應用程式,Zeabur 都能以最少的設定變更完成部署。
開始之前
- 一個 Zeabur 帳號。
- 您的應用程式原始碼存放在 Git 儲存庫中(GitHub)。
- 可存取您的 Fly.io 主控台與 CLI(
flyctl)。
如果您的應用程式僅透過 Docker 映像檔部署在 Fly.io 上(沒有 Git 儲存庫),您仍然可以將映像檔推送到容器映像庫,然後在 Zeabur 上以 Docker 服務的方式部署。
步驟 1:檢視您的 Fly.io 設定
開啟專案的 fly.toml 檔案,其中包含您需要在 Zeabur 上重新設定的項目:
# fly.toml — 範例
app = "my-app"
[env]
NODE_ENV = "production"
PORT = "8080"
[http_service]
internal_port = 8080
[[vm]]
memory = "512mb"
cpu_kind = "shared"請記下以下資訊:
[env]下的環境變數,以及透過fly secrets list設定的所有密鑰。- 應用程式監聽的內部連接埠。
- 如果有設定
[mounts],請注意磁碟區的相關資訊。
步驟 2:匯出 Fly.io 密鑰
列出所有密鑰,以便將它們轉移到 Zeabur:
fly secrets list -a my-app這會顯示密鑰名稱(值會被隱藏)。您需要從原始來源(例如資料庫供應商、API 主控台)取得或重新產生每個密鑰的值。
步驟 3:將 Git 儲存庫連結到 Zeabur
- 登入 Zeabur 主控台。
- 建立新專案並選擇專用伺服器(或購買新伺服器)。
- 點選 Add Service → Git,連結您的 GitHub 帳號。
- 選擇包含應用程式程式碼的儲存庫。
Zeabur 會自動偵測您的專案語言與框架——在大多數情況下不需要 fly.toml 或 Dockerfile。
如果您的專案使用 Dockerfile,Zeabur 會自動偵測並使用它,不需要額外設定。
步驟 4:設定環境變數
- 在 Zeabur 主控台中點選您新建立的服務。
- 前往 Variables 分頁。
- 將 Fly.io 應用程式中的每個環境變數與密鑰逐一新增。
您不需要設定 PORT——Zeabur 會自動分配並注入服務的連接埠。
步驟 5:設定持久化儲存(如需要)
如果您的 Fly.io 應用程式使用磁碟區(fly.toml 中的 [mounts]),您需要在 Zeabur 上建立磁碟區:
- 在服務設定中,前往 Volumes 分頁。
- 點選 Add Volume 並指定掛載路徑(例如
/data)。 - Zeabur 會提供在重新部署後依然保留的持久化儲存空間。
Fly.io 的磁碟區無法自動匯出。您需要透過 SSH 連線到 Fly.io 機器(fly ssh console),壓縮您的資料,然後將其傳輸到 Zeabur 上的新磁碟區。
步驟 6:遷移資料庫
如果您使用 Fly.io Postgres:
-
從 Fly.io Postgres 匯出資料:
fly proxy 15432:5432 -a my-app-db & pg_dump -h localhost -p 15432 -U postgres -d my_database > backup.sql -
在 Zeabur 上建立資料庫:點選 Add Service → 資料庫 → PostgreSQL。
-
匯入資料:使用 Zeabur PostgreSQL 服務提供的連線字串:
psql "your-zeabur-postgres-connection-string" < backup.sql -
更新應用程式的資料庫連線:在 Zeabur 的 Variables 分頁中,將
DATABASE_URL設定為 Zeabur PostgreSQL 的連線字串。您可以使用 Zeabur 內建的變數參照${POSTGRES_URI}來自動注入連線字串。
步驟 7:設定自訂網域
- 在 Zeabur 主控台中,點選您的服務並前往 Networking 分頁。
- 點選 Generate Domain 取得免費的
.zeabur.app子網域,或點選 Custom Domain 新增您自己的網域。 - 如果使用自訂網域,請更新您的 DNS 記錄:
- 移除舊的 Fly.io CNAME 或 A 記錄。
- 新增 CNAME 記錄,指向 Zeabur 提供的目標位址。
主要差異:Fly.io vs Zeabur
| 功能 | Fly.io | Zeabur |
|---|---|---|
| 設定方式 | fly.toml + CLI | 自動偵測 + 主控台 |
| 部署方式 | fly deploy CLI 指令 | Git push(自動部署) |
| 擴展 | Machines API,手動設定 | 主控台一鍵擴展 |
| 資料庫 | Fly Postgres(自行管理) | 內建資料庫(受管理的 PostgreSQL、MySQL、Redis 等) |
| 網路 | Anycast IP、WireGuard | 自動 HTTPS、自訂網域 |
| 持久化儲存 | Fly Volumes(區域鎖定) | Zeabur Volumes(受管理) |
| 計價模式 | 按 VM + 頻寬計費 | 按使用量計費,用多少付多少 |
完成了!您的 Fly.io 應用程式現在已在 Zeabur 上運行。如果遇到任何問題,歡迎到我們的 社群論壇 尋求協助。