本文へスキップ

Fly.io からの移行 ​

Fly.io のアプリは Docker イメージなので、たいてい同じ Dockerfile で Zenavo にデプロイできます。fly.toml は読まれないので、その設定を次のようにサービスに対応させます。

Fly.io と Zenavo の対応 ​

Fly.ioZenavo
アプリ1 台のサーバー上のプロジェクト内のサービス
Dockerfile を使う [build]ルートディレクトリの Dockerfile
[http_service] の internal_portサービスの HTTP ポート
[env] と secrets変数
[processes]プロセスごとに、同じリポジトリからそれぞれの起動コマンドで動くサービス
[deploy] release_command起動コマンドの中で、アプリの前に実行するコマンド
[[mounts]] ボリュームボリューム
HTTP チェックHTTP のヘルスチェック
<app>.internal と Flycast<hostname>.zenavo.internal(プライベートネットワーク)
リージョン、自動停止・起動プロジェクトごとに 1 台のサーバー。サービスは動き続けます
fly certsLet's Encrypt の証明書を自動発行

1. アプリをデプロイする ​

  1. サーバーを追加し、プロジェクトを作成します。
  2. Add Service → GitHub でリポジトリを選びます。プレビューには Dockerfile と表示されるはずです。HTTP ポートをアプリの internal_port にします。
  3. [processes] の各項目ごとにそのコマンドのサービスを追加し、各 [[mounts]] ごとに同じパスでボリュームを追加します。

2. 変数をコピーする ​

[env] を Variable → Edit Raw Variables にコピーします。fly secrets list は名前しか表示しないので、値は保管している場所から取ってください。データベースの URL は Zenavo のデータベースに向けます。例:DATABASE_URL=${POSTGRESQL_CONNECTION_STRING}。

3. データを移す ​

PostgreSQL。 Fly Postgres のアプリへのトンネルを開き、プレーンな SQL でダンプします。Zenavo は pg_dump の custom 形式を読めません。

sh
fly proxy 15432:5432 -a my-db
pg_dump --no-owner --no-acl "postgres://postgres:PASSWORD@localhost:15432/my_app" | gzip > fly.sql.gz

新しい PostgreSQL サービスの Backup & Restore タブで、同じメジャーバージョンを使ってアップロード・復元します(バックアップのアップロード)。

ボリューム。 マシン上でボリュームを非圧縮のアーカイブにまとめ、ダウンロードします。

sh
fly ssh console -a my-app -C "tar cf /tmp/data.tar -C /data ."
fly ssh sftp get /tmp/data.tar -a my-app

プロジェクトを停止した状態で、サービスの Backup & Restore タブから data.tar を新しい空のボリュームに復元します(バックアップと復元)。

4. ドメインを切り替える ​

Networking でドメインを設定し、Fly を向いている A と AAAA レコードを、サーバーの IP アドレスへの A レコードに置き換えます(ドメインと HTTPS)。

Zeabur とは関係ありません。