これは2024/04/02時点の情報です。
やりたいこと
作成したRailsアプリを無料でデプロイしたい。
利用するサービス
Render.com
webアプリ公開することができるPaas
Neon
PostgreSQLのデプロイサービス
デプロイ手順
Neonデプロイ
はじめにNeonの方からセットアップする。
公式サイトにアクセスしてFree Tierでアカウント登録を行う。
画面の指示に従ってdatabaseを作成する。
DashbordからConnection Detailsを開く。
Connection Details内のconnection stringをNode.jsに切り替える。
その下に出てきた.envタブを選択する。タブ内にある
PGHOST
,PGDATABASE
,PGUSER
,PGPASSWORDP
,ENDPOINT_ID
をメモする。
もしPGPASSWORDが不明の場合、サイドバーのbranchsのRolesから
リセットパスワードを実行し、再度passwordを発行する。
※この内容は秘匿情報なので絶対に他人に公開しないでくださいメモした内容を元に
EDITOR="vi" rails credentials:edit
コマンドでrails内のconfig/credentials.yml.enc
に下記内容を追加する。
neon:
username: PGUSERの内容
host: PGHOSTの内容
database: PGDATABASEの内容
password: PGPASSWORDの内容
config/database.yml
に下記内容を追加する。
production:
<<: *default
host: <%= Rails.application.credentials.neon&.fetch(:host) %>
database: <%= Rails.application.credentials.neon&.fetch(:database) %>
username: <%= Rails.application.credentials.neon&.fetch(:username) %>
password: <%= Rails.application.credentials.neon&.fetch(:password) %>
ssl_mode: verify_identity
sslca: "/etc/ssl/certs/ca-certificates.crt"
Renderデプロイ
config/puma.rb
に下記内容を追加する。
workers ENV.fetch("WEB_CONCURRENCY") { 2 } preload_app!
config/environments/production.rb
に下記を記載する。
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? || ENV['RENDER'].present?
bin/render-build.sh
を作成し、下記コマンドを記載する。
#!/usr/bin/env bash # exit on error set -o errexit bundle install bundle exec rake assets:precompile bundle exec rake assets:clean bundle exec rake db:migrate
項目 | 入力内容 |
---|---|
Branch | デプロイしたいブランチ名 |
Runtime | Ruby |
Build Command | ./bin/render-build.sh |
Start Command | bundle exec puma -C config/puma.rb |
Instance Type | Free |
画面下部の
Advanced
内のAdd Environment Variable
にconfig/master.key
に記載の文字列をRAILS_MASTER_KEY
として登録する。Create Web Service
をクリックするとデプロイ開始デプロイ完了し下記画面のURLをクリックするとデプロイしたアプリにアクセスできる。
感想
Renderの記事は多かったが、DBサービスに関してはあまり情報がなく
苦戦した。
スタートアップアプリや個人開発だとあまりコストかけたくないかなと思うので、今回の記事が参考になったら幸いです。