🐃
Fly.ioにSinatraとRailsのアプリをデプロイ
以前に作成した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
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
環境変数
fly secrets set RAILS_MASTER_KEY=$(cat config/master.key)
デプロイ
以下のコマンドを実行するとデプロイされます。
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>
PostgreSQLサーバーのディスク容量を拡張
PostgreSQLのサーバーを作成すると、デフォルトのディスク容量は1GBとなっています。これを2GBに拡張する方法を調べていました。
以下のコマンドでディスク容量を拡張することができました。
fly volumes extend <volume id> -s 2 -a <app name>
公式ドキュメントによると、ディスク容量の拡張はできても縮小することはできないようですので、この点は注意していきたいと思います。
PostgreSQLのパスワードがわからなくなった場合
SSHでログインしてecho
します。
fly ssh console
echo $DATABASE_URL
Discussion