跳到正文

從 Railway 遷移 ​

Railway 專案和 Zenavo 專案非常接近:服務、內部網路通訊、共享變數和儲存卷都有對應的功能。

Railway 與 Zenavo 的對應關係 ​

RailwayZenavo
專案與環境一台伺服器上的一個專案;另一個環境就是一個複製出來的專案
來自 GitHub 的服務來自 GitHub 的服務,推送時重新部署
Nixpacks 或 Railpack 建置zbpack,或你的 Dockerfile
啟動指令、健康檢查路徑(railway.json)啟動指令和 HTTP 健康檢查
引用變數 ${{Postgres.DATABASE_URL}}共享變數,例如 ${POSTGRESQL_CONNECTION_STRING}(環境變數)
<service>.railway.internal<hostname>.zenavo.internal(內部網路通訊)
Volume儲存卷
Watch paths監聽路徑
副本副本數,在同一台伺服器上
Cron 定時暫不支援定時任務:在應用裡執行一個帶排程器的 worker 服務

1. 重建服務 ​

  1. 新增伺服器並建立專案。
  2. 先新增資料庫(資料庫),再從 新增服務 → GitHub 新增每個應用服務,根目錄保持一致。
  3. 把每個服務的啟動指令和健康檢查路徑從 Railway 的設定或 railway.json 複製到服務的 設定 中。

2. 複製變數 ​

Railway 服務 Variables 中的 Raw Editor 會以 KEY=value 行顯示變數;把它們貼上到 變數 → 編輯原始變數。把引用變數換成 Zenavo 的共享變數:${{Postgres.DATABASE_URL}} 改為 ${POSTGRESQL_CONNECTION_STRING},${{api.RAILWAY_PRIVATE_DOMAIN}} 改為 api.zenavo.internal。

3. 遷移資料 ​

PostgreSQL 透過資料庫的公開網路 URL(Railway 上的 DATABASE_PUBLIC_URL)匯出為純 SQL,Zenavo 上使用相同的主版本:

sh
pg_dump --no-owner --no-acl "$DATABASE_PUBLIC_URL" | gzip > railway.sql.gz

在新資料庫的 備份與還原 分頁上傳,並還原到空的資料庫中(上傳備份)。MySQL 同樣用 mysqldump。

儲存卷的檔案需要先複製出來(例如在 Railway 服務的 shell 中用 tar),然後用服務的 檔案 卡片上傳,或者把未壓縮的 .tar 還原到空的儲存卷中(備份與還原)。

4. 切換網域 ​

在 網路 中繫結每個網域,然後把 Railway 的 CNAME 換成指向伺服器 IP 位址的 A 記錄(網域與 HTTPS)。

與 Zeabur 無關聯。