ゆみんぐ ~Yumi+Programming~

弓道とプログラミングを楽しむブログ

Fly.ioへRailsアプリをデプロイ

概要

フィヨルドブートキャンプの卒業課題である自作サービスをFly.ioにデプロイしたので手順をまとめました。

環境

Fly.ioにした理由

当初、自作サービスのプラットフォームはHerokuを予定していましたが、2022.11.28に無料プランの提供を廃止するという発表があったため、別のプラットフォームも含めて検討しました。

Herokuのほか、Render、Railway、Fly.ioを検討対象にしていましたが、作成している自作サービスがHotwireを使用しているので、Regionの影響を大きく受けるのが判明しました。

【参考】Hotwireの良かった点、辛かった点、向いているケース、向いていないケース - 猫Rails

Heroku以外の、Render、Railway、Fly.ioの対応Regionsを調べたところ、一番近いRegionsは、Renderがシンガポール、Railwayは西アメリカ、Fly.ioが東京でした。

Fly.ioはRailsアプリをデプロイする記事あり問題なさそうだったので、Fly.ioで進めることにしました。

インストール・アカウント登録

公式ページのトップページGet Startedから導入手順に進みます。

まずはflyctlをインストールします。Homebrewがある場合は以下のコマンドでインストールできます。Homebrewについてはこちらにあります。

$ brew install flyctl

次にアカウントを登録します。以下のコマンドを実行します。

$ flyctl auth signup

ブラウザが起動してアカウント登録画面が表示されます。

EメールかGitHubのどちらかを選択できるので、今回はGitHubを選択しました。

GitHubの認証が終わるとクレジットカード入力画面が表示されるが、入力欄の下のリンクでスキップしました。 (注:スキップしたら設定ファイル作成時にエラーが出ました。後述しています。)

スキップするとDocsに移動するのでここで閉じてOK。

ターミナルにメッセージが表示されています。これでログインできました。

Waiting for session... Done
successfully logged in as メールアドレス

次回ログインする場合は以下のコマンドでブラウザが起動し、ログイン画面が表示されます。

$ fly auth login

デプロイに必要なファイルを作成

次にデプロイに必要なファイルを作成します。以下のコマンドで表示される質問に答えていけば自動で作成されます。

$ flyctl launch

アプリ名を入力します

Scanning source code
Detected a Rails app
? Choose an app name (leave blank to generate one): 

リージョンを聞かれるのでそのままTokyo, Japan (nrt)で決定。

automatically selected personal organization: メールアドレス
? Choose a region for deployment:  [Use arrows to move, type to filter]

ここでエラーが発生しました。

Error We need your payment information to continue! Add a credit card or buy credit: https://fly.io/dashboard/my-account/billing

クレジットカード情報を入れないと進めないようなので、公式ページのダッシュボードから入力して再度fly launchを実行。

以下の質問が出るので、全てNoで回答したら、またアプリ名から質問が始まりました。

? Overwrite "/Users/macbook-it/kyudo-training-log/.dockerignore"?
? Overwrite "/Users/macbook-it/kyudo-training-log/Dockerfile"?
? Overwrite "/Users/macbook-it/kyudo-training-log/lib/tasks/fly.rake"?

Postgresqlを使用しているのでYes。

? Would you like to set up a Postgresql database now? 

無料枠で使いたいのでそのまま1番上を選択。

? Select configuration:  [Use arrows to move, type to filter]
> Development - Single node, 1x shared CPU, 256MB RAM, 1GB disk
  Production - Highly available, 2x shared CPUs, 4GB RAM, 40GB disk
  Production - Highly available, 4x shared CPUs, 8GB RAM, 80GB disk
  Specify custom configuration

するとDB情報やDATABASE_URLが表示されます。二度と見られないと書いてあるので、安全な場所に転記して残しておきます。

Save your credentials in a secure place -- you won't be able to see them again!

Redisは使用していないのでNo。

? Would you like to set up an Upstash Redis database now?

以下のメッセージが表示されます。これで初期設定が完了しました。

Your Rails app is prepared for deployment.

If you need custom packages installed, or have problems with your deployment
build, you may need to edit the Dockerfile for app-specific changes. If you
need help, please post on https://community.fly.io.

Now: run 'fly deploy' to deploy your Rails app.

デプロイ

次にデプロイです。以下のコマンドを実行するだけです。

$ fly deploy

【省略】

 1 desired, 1 placed, 1 healthy, 0 unhealthy [health checks: 1 total, 1 critical]
--> v0 deployed successfully

しばらく待つと完了するので、以下のコマンドでサイトを見ることができます。

$ fly open

ブラウザが立ち上がって表示を確認できました。

なお、URLはhttps://アプリ名.fly.devになります。

独自ドメインを使う場合の設定手順については、また記事にしようと思います。

再度デプロイする場合

コードを修正して再度デプロイする場合は、以下のコマンドを実行すればOK。簡単です。

$ fly deploy

参考サイト