Railway からの移行
Railway のプロジェクトは Zenavo のプロジェクトによく対応します。サービス、プライベートネットワーク、共有変数、ボリュームのすべてに相当するものがあります。
Railway と Zenavo の対応
| Railway | Zenavo |
|---|---|
| プロジェクトと環境 | 1 台のサーバー上のプロジェクト。別の環境は複製したプロジェクト |
| GitHub からのサービス | GitHub からのサービス(push で再デプロイ) |
| Nixpacks や Railpack のビルド | zbpack、または自分の Dockerfile |
起動コマンド、ヘルスチェックのパス(railway.json) | 起動コマンドと HTTP のヘルスチェック |
参照変数 ${{Postgres.DATABASE_URL}} | 共有変数。例:${POSTGRESQL_CONNECTION_STRING}(環境変数) |
<service>.railway.internal | <hostname>.zenavo.internal(プライベートネットワーク) |
| ボリューム | ボリューム |
| Watch paths | Watch paths |
| レプリカ | レプリカ(1 台のサーバー上) |
| Cron スケジュール | 定期実行はまだありません:アプリにスケジューラーを持つワーカーサービスを動かします |
1. サービスを作り直す
- サーバーを追加し、プロジェクトを作成します。
- 先にデータベースを追加し(データベース)、次に Add Service → GitHub から各アプリのサービスを同じルートディレクトリで追加します。
- 各サービスの起動コマンドとヘルスチェックのパスを、Railway の設定や
railway.jsonからサービスの Settings にコピーします。
2. 変数をコピーする
Railway のサービスの Variables にある Raw Editor には、変数が KEY=value の行で表示されます。それを Variable → Edit Raw Variables に貼り付けます。参照変数は 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新しいデータベースの Backup & Restore タブでアップロードし、空のデータベースに復元します(バックアップのアップロード)。MySQL も同じように mysqldump を使います。
ボリュームは、ファイルを取り出して(たとえば Railway のサービスのシェルで tar)、サービスの Files タイルでアップロードするか、非圧縮の .tar を空のボリュームに復元します(バックアップと復元)。
4. ドメインを切り替える
Networking で各ドメインを設定し、Railway の CNAME をサーバーの IP アドレスへの A レコードに置き換えます(ドメインと HTTPS)。