fly.ioでPostgreSQLを使ってRuby on Railsアプリを無料でデプロイする方法
1. 概要
「個人開発だからお金はかけたくないけど外部には公開したい」なんてお悩みはありませんか?
今回ご紹介するfly.ioなら、かつてのHerokuのように無料でデプロイすることができます。
2. 環境
- MacBook Air(M1)
- macOS Ventura version13.1
3. fly.ioとは?
Run your full stack apps (and databases!) all over the world. No ops required.
翻訳すると、
「フルスタックアプリケーション(およびデータベース!)を世界中で実行できます。運用は不要です。」
ということらしいです。
AWSやHerokuなどと比べて、よりシンプルかつ手軽に利用できるのがfly.ioの特徴です。
そしてなんと物理サーバーが東京にあるみたい。
さらにDockerイメージにパッケージ化されている限りあらゆるアプリをデプロイでき、postgreSQLも使えて無料利用枠もある。
ということで今回はRailsアプリをデプロイしてみたいと思います。
4. flyctlをインストールする
アカウント作成からデプロイまでを操作できるコマンドラインユーティリティのようです。
OSに合わせて以下のコマンドを実行してインストールします。
4.1. macOS
brew install flyctl
4.2. Linux
curl -L https://fly.io/install.sh | sh
4.3. Windows
iwr https://fly.io/install.ps1 -useb | iex
5. アカウントを作成する
上記のサイトにアクセスするか、以下のコマンドを実行してサインアップのページに移動します。
flyctl auth signup
EmailかGitHubを使用してサインアップします。
画面が遷移するので、「カード番号」と書かれている部分に支払い情報を入力し、「Add Card」をクリックします。
これでアカウントの作成が完了しました。
6. アプリケーションを作成する
Railsアプリを作成しましょう。すでに用意してある方はそれを使われても構いませんし、とりあえずデプロイしてみたいという方は今回私が利用したコードをGitHub上に上げておきましたのでそれをgit clone
などして利用されてください。
7. アプリケーションを起動する
アプリケーションの起動のために、どのように配置するかをシステムに伝えるためのfly.tomlファイルが必要ですので、以下のコマンドを入力して生成します。
fly launch
7.1. DockerfileをOverwriteするか
上記のコマンドを実行すると、以下のように出力されますので、y
を入力します。
? Overwrite "/Users/ユーザー名/ディレクトリ名/Dockerfile"? (y/N)
7.2. アプリケーション名を決める
次はアプリケーションの名前を入力します。
入力せずにEnterを押すと自動的に名前が決まります。
? Choose an app name (leave blank to generate one):
7.3. リージョンを決める
次にリージョンの選択です。カーソル(>)が出て、上下を押すと移動します。ここでは日本の東京(Tokyo,Japan)を選択します。
? Choose a region for deployment: [Use arrows to move, type to filter]
省略
:
Miami, Florida (US) (mia)
> Tokyo, Japan (nrt)
Chicago, Illinois (US) (ord)
:
省略
以下から分かるように、fly.tomlファイルが自動的に生成され、fly上でアプリが作成されました。
Created app アプリケーション名 in organization personal
Admin URL: https://fly.io/apps/アプリケーション名
Hostname: アプリケーション名.fly.dev
Set secrets on アプリケーション名: RAILS_MASTER_KEY
Wrote config file fly.toml
7.4. PostgreSQLを設定する
次にPostgreSQLをセットアップしますので、ここでy
を入力します。
? Would you like to set up a Postgresql database now? (y/N)
リージョンと同様にカーソル(>)が出てくるので、今回は料金がかからないようにDevelopmentを選択します。
? 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
しばらく待つと、以下のようにデータベースが作成されました。
Postgres cluster アプリケーション名-db created
Username: ユーザーネーム
Password: パスワード
Hostname: アプリケーション名.internal
Proxy port: プロキシポート
Postgres port: Postgresポート
Connection string: 接続文字列
7.5. Redisを使うか選択する
そしてUpstashのRedisを使うか問われますが、今回はN
とします。また機会があれば書くかもです。
? Would you like to set up an Upstash Redis database now? (y/N)
するとfly deployでもうデプロイできてしまうようです。
Now: run 'fly deploy' to deploy your Rails app.
7.6. デプロイする
fly deploy
これでしばらく待ちます。そして最後に
deployed successfully
と出力されれば完了です。
7.7. ステータスを確認する
デプロイの詳細な情報は以下のコマンドで確認することができます。
flyctl status
ここで、running
やsuccesful
等出力されていれば成功していると思われます。
8. デプロイできているか確認する
最後にちゃんとデプロイできたかを確認します。
https://アプリケーション名.fly.dev
にアクセスしてみましょう。
ちゃんとデプロイできていました。
Discussion