從 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

  1. 登入 Zeabur 主控台
  2. 建立新專案並選擇專用伺服器(或購買新伺服器)。
  3. 點選 Add ServiceGit,連結您的 GitHub 帳號。
  4. 選擇包含應用程式程式碼的儲存庫。

Zeabur 會自動偵測您的專案語言與框架——在大多數情況下不需要 fly.tomlDockerfile

💡

如果您的專案使用 Dockerfile,Zeabur 會自動偵測並使用它,不需要額外設定。

步驟 4:設定環境變數

  1. 在 Zeabur 主控台中點選您新建立的服務。
  2. 前往 Variables 分頁。
  3. 將 Fly.io 應用程式中的每個環境變數與密鑰逐一新增。

您不需要設定 PORT——Zeabur 會自動分配並注入服務的連接埠。

步驟 5:設定持久化儲存(如需要)

如果您的 Fly.io 應用程式使用磁碟區(fly.toml 中的 [mounts]),您需要在 Zeabur 上建立磁碟區:

  1. 在服務設定中,前往 Volumes 分頁。
  2. 點選 Add Volume 並指定掛載路徑(例如 /data)。
  3. Zeabur 會提供在重新部署後依然保留的持久化儲存空間。
⚠️

Fly.io 的磁碟區無法自動匯出。您需要透過 SSH 連線到 Fly.io 機器(fly ssh console),壓縮您的資料,然後將其傳輸到 Zeabur 上的新磁碟區。

步驟 6:遷移資料庫

如果您使用 Fly.io Postgres:

  1. 從 Fly.io Postgres 匯出資料

    fly proxy 15432:5432 -a my-app-db &
    pg_dump -h localhost -p 15432 -U postgres -d my_database > backup.sql
  2. 在 Zeabur 上建立資料庫:點選 Add Service資料庫PostgreSQL

  3. 匯入資料:使用 Zeabur PostgreSQL 服務提供的連線字串:

    psql "your-zeabur-postgres-connection-string" < backup.sql
  4. 更新應用程式的資料庫連線:在 Zeabur 的 Variables 分頁中,將 DATABASE_URL 設定為 Zeabur PostgreSQL 的連線字串。您可以使用 Zeabur 內建的變數參照 ${POSTGRES_URI} 來自動注入連線字串。

步驟 7:設定自訂網域

  1. 在 Zeabur 主控台中,點選您的服務並前往 Networking 分頁。
  2. 點選 Generate Domain 取得免費的 .zeabur.app 子網域,或點選 Custom Domain 新增您自己的網域。
  3. 如果使用自訂網域,請更新您的 DNS 記錄:
    • 移除舊的 Fly.io CNAME 或 A 記錄。
    • 新增 CNAME 記錄,指向 Zeabur 提供的目標位址。

主要差異:Fly.io vs Zeabur

功能Fly.ioZeabur
設定方式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 上運行。如果遇到任何問題,歡迎到我們的 社群論壇 尋求協助。