8/7/2023
8/7/2023
Render.comを利用していましたが、15分リクエストがないとサーバースリープしてしまい、立ち上がりも遅かったので、Fly.ioに変更しました。
また、Fly.ioでは東京リージョンが利用可能という点もメリットだと思います。
$ curl -L https://fly.io/install.sh | sh
https://fly.io/docs/hands-on/install-flyctl/(Fly.ioの公式ドキュメント)
新規登録の場合
$ flyctl auth signup
アカウントを持っている場合
$ flyctl auth login
上記コマンドを叩くと、Fly.ioのサインアップ、サインインの画面がブラウザで表示されます。
/Railsアプリのルートディレクトリ
$ flyctl launch
コマンドを叩くと下記のメッセージが出ます。
Scanning source code
Detected a Rails app
ファイルを解析して、Railsであると自動で判別してくれます。
1. アプリ名を指定
? App Name (leave blank to use an auto-generated name):
2. リージョン指定(nrt (Tokyo, Japan)を選択)
? Select region: [Use arrows to move, type to filter]
3. PostgreSQLでデータベースを作成するか、今回は作成するので、y
? Would you like to set up a Postgresql database now? [y/N]
4. 使用する容量(一番上のDevelopmentを選択)
? Select configuration: [Use arrows to move, type to filter]
> Development - Single node, 1x shared CPU, 256MB RAM, 1GB disk
Production - Highly available, 1x shared CPU, 256MB RAM, 10GB disk
Production - Highly available, 1x Dedicated CPU, 2GB RAM, 50GB disk
Production - Highly available, 2x Dedicated CPU's, 4GB RAM, 100GB disk
Specify custom configuration
5. 今回は、n
? Scale single node pg to zero after one hour? (y/N)
6. Redisを使用するか、今回は作成しないので、n
? Would you like to set up an Upstash Redis database now? [y/N]
7. .dockerignoreファイルを作成するか、今回は作成するので、y
? Create .dockerignore from 1 .gitignore files? (y/N)
PostgreSQLの情報は、下記のように表示されます。
Postgres cluster sample-rails-db created
Username: postgres
Password: パスワード
Hostname: ホスト名
Flycast: Flycast
Proxy port: 5432
Postgres port: 5433
Connection string: データベースURL
全てに回答し終わると、このように表示されます。また、flyの設定ファイルのfly.tomlファイルがルートディレクトリに作成されます。
Once ready: run 'fly deploy' to deploy your Rails app.
このように、CLIで設定することができます。Fly.ioのダッシュボードからでも設定できます。
$ flyctl secrets set RAILS_ENV=production
DATABASE_URLとRAILS_MASTER_KEYは、自動で設定されています。
app = "fly launchコマンドで指定したアプリ名"
primary_region = "nrt"
console_command = "/rails/bin/rails console"
[build]
[http_service]
internal_port = 3000
force_https = true
auto_stop_machines = true
auto_start_machines = true
min_machines_running = 0
processes = ["app"]
[[statics]]
guest_path = "/app/public"
url_prefix = "/"
staticsの設定項目ですが、
[[statics]]
guest_path = "/myapp/app/public"
url_prefix = "/myapp"
自分の環境の場合ですが、このように設定することで、
no such file or directory (os error 2) が出なくなりました。
$ flyctl deploy
$ flyctl open
flyctl openで、アプリが正常に起動すればデプロイ完了です。