🐃

Fly.ioにSinatraとRailsのアプリをデプロイ

2023/09/11に公開

以前に作成したSinatraとRailsのアプリをFly.ioにデプロイしました。

セットアップ

Homebrewでflyctlをインストールします。

brew install flyctl

FLy.ioにログインします。

fly auth login

Sinatraアプリのディレクトリに移動して以下のコマンドを実行します。

fly launch

Sinatra

デプロイ

デプロイする前にconfig.ruを作成しておきます。

config.ru
require './app.rb'

run Sinatra::Application

以下のコマンドを実行するとデプロイされます。

fly deploy

プロダクション環境の設定

デプロイされたSinatraアプリは開発環境で実行されているようです。以下のようにfly secretsコマンドでRACK_ENVを設定するとプロダクション環境になりました。

fly secrets set RACK_ENV=production

https://qiita.com/yuuki-h/items/ec23de152368d36672ea

Rails

flyコマンドを実行してセットアップをするとDocker関連のファイルが作成されます。

fly launch

Docker

Dockerfileのasset:precompileのコマンドにNODE_OPTIONS=--openssl-legacy-providerを追加します。

Dockerfile
RUN SECRET_KEY_BASE=DUMMY NODE_OPTIONS=--openssl-legacy-provider ./bin/rails assets:precompile

https://qiita.com/m6mmsf/items/30cf16c179b5e2f01a6c

環境変数

fly secrets set RAILS_MASTER_KEY=$(cat config/master.key)

https://fly.io/docs/rails/the-basics/configuration/

デプロイ

以下のコマンドを実行するとデプロイされます。

fly deploy

PostgreSQL

バックアップとリストア

fly proxy 15432:5432 -a <app-name>
pg_dump -Fc -h localhost -p 15432 -U <dbuser> <dbname> > <filename>
pg_restore --clean --no-acl --no-owner -h localhost -p 15432 -U <dbuser> -d <dbname> <filename>

https://community.fly.io/t/pg-dump-for-dum-p-ies/4724

PostgreSQLサーバーのディスク容量を拡張

PostgreSQLのサーバーを作成すると、デフォルトのディスク容量は1GBとなっています。これを2GBに拡張する方法を調べていました。

https://fly.io/docs/reference/volumes/#extend-a-volume

以下のコマンドでディスク容量を拡張することができました。

fly volumes extend <volume id> -s 2 -a <app name>

公式ドキュメントによると、ディスク容量の拡張はできても縮小することはできないようですので、この点は注意していきたいと思います。

PostgreSQLのパスワードがわからなくなった場合

SSHでログインしてechoします。

fly ssh console
echo $DATABASE_URL

https://community.fly.io/t/lost-postgres-password/4192/2

Discussion