本文へスキップ

Railway からの移行 ​

Railway のプロジェクトは Zenavo のプロジェクトによく対応します。サービス、プライベートネットワーク、共有変数、ボリュームのすべてに相当するものがあります。

Railway と Zenavo の対応 ​

RailwayZenavo
プロジェクトと環境1 台のサーバー上のプロジェクト。別の環境は複製したプロジェクト
GitHub からのサービスGitHub からのサービス(push で再デプロイ)
Nixpacks や Railpack のビルドzbpack、または自分の Dockerfile
起動コマンド、ヘルスチェックのパス(railway.json)起動コマンドと HTTP のヘルスチェック
参照変数 ${{Postgres.DATABASE_URL}}共有変数。例:${POSTGRESQL_CONNECTION_STRING}(環境変数)
<service>.railway.internal<hostname>.zenavo.internal(プライベートネットワーク)
ボリュームボリューム
Watch pathsWatch paths
レプリカレプリカ(1 台のサーバー上)
Cron スケジュール定期実行はまだありません:アプリにスケジューラーを持つワーカーサービスを動かします

1. サービスを作り直す ​

  1. サーバーを追加し、プロジェクトを作成します。
  2. 先にデータベースを追加し(データベース)、次に Add Service → GitHub から各アプリのサービスを同じルートディレクトリで追加します。
  3. 各サービスの起動コマンドとヘルスチェックのパスを、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)。

Zeabur とは関係ありません。