前回は Rails の開発環境を Docker で作成しました。
-
Alpine+Rails6+PostgreSQLのDockerfileを作る
Alpine Linux ベースの Docker イメージで Rails6.1 + PostgreSQL の環境を作る機 ...
続きを見る
作成した Rails のアプリケーションを Heroku の無料プランで公開したときの手順を残しておきます。
目次
- アカウント作成
- Heroku CLI をインストール
- アプリケーションを作成
- PostgreSQL を作成
- Heroku Postgres の接続設定
- Rails アプリケーションを Heroku にデプロイ
- データベースのマイグレーション
- アプリケーションを開く
- ログを確認する
- デプロイ時に自動でデータベースのマイグレーションを行う
- データベースをバックアップする
アカウント作成
Cloud Application Platform | Heroku から右上の「Sign up」リンクをクリックしてアカウントを登録します。
Heroku CLI をインストール
Heroku アプリケーションを操作するための CLI ツールをインストールします。The Heroku CLI | Heroku Dev Center を参考に自分の OS に合った方法でインストールを行います。
heroku コマンドをインストールできたら heroku コマンドでログインを行います。
heroku login
コマンドを実行すると、ブラウザにログイン画面が表示されます。ブラウザでログイン後、コマンドライン上で認証完了のメッセージが表示されれば OK です。
アプリケーションを作成
Heroku 管理画面の Personal apps | Heroku にアクセスし、New から Create new app を選択します。アプリケーション名は Heroku 内で重複しないものにする必要があります。URL の文字列などにそのまま利用されます。リージョンは日本がないので、United States を選択します。
PostgreSQL を作成
PostgreSQL は Add-on を追加することで利用することができます。アプリケーション詳細画面で Resource タブを選択し、Add-on の管理画面に移動します。検索欄に postgres と入力し、Heroku Postgres を選択します。Hobby Dev - Free プランを選択して Provision ボタンを押します。
Heroku を利用して無料でアプリの構築 | Heroku にも書かれているように、PostgreSQL のフリープランは制限があります。大きな制限としては、ダウンタイムがあること、1 万レコードの行数制限があります。
Heroku Postgres について詳しくは Heroku Postgres | Heroku Dev Center を確認しましょう。
Heroku Postgres の接続設定
前回構築した Rails アプリケーションを Heroku Postgres に接続できるように設定します。
config/database.yml を以下のように編集します。
config/database.yml
production:
<<: *default
url: <%= ENV['DATABASE_URL'] %>
DATABASE_URL
は Heroku で DB を使う設定にした場合に、Heroku 上で設定される環境変数です。この変数に接続情報がすべて埋め込まれるので、ユーザ名やパスワードなどは設定しなくても DB に接続できるようになります。
環境変数はアプリケーションの詳細画面や、heroku cli から確認することができます。${app_name} は自身のアプリケーション名を入力します。
heroku config -a ${app_name}
Rails アプリケーションを Heroku にデプロイ
Heroku アプリケーションの詳細画面で Deploy タブを選択し、Deployment method に GitHub を選択します。後は画面の指示に従ってリポジトリを選択します。Automatic deploys の設定をしてブランチを選択すると、GitHub の指定したブランチに変更があった場合、自動的に Heroku にデプロイを行うことができます。
デプロイのログは詳細画面の Activity タブから確認することができます。
データベースのマイグレーション
アプリケーションのデプロイが終わったら、Heroku CLI を使って Heroku Postgres に対して DB のマイグレーションを行います。${app_name} は自身のアプリケーション名を入力します。
heroku run rails db:migrate -a ${app_name}
アプリケーションを開く
これで Web アプリケーションのデプロイは完了です。管理画面の Open app リンクを選択するか、heroku open
コマンドで Web アプリケーションにアクセスすることができます。
ログを確認する
アプリケーションでエラーが発生した場合は heroku logs
コマンドを使います。
heroku logs --tail -a ${app_name}
を実行すると出力されたログをリアルタイムで確認することができます。
デプロイ時に自動でデータベースのマイグレーションを行う
リポジトリのルートディレクトリに Precfile を配置することで、db:migrate
のマイグレーションのコマンドをデプロイ時に自動で実行することができます。
release: rails db:migrate
より詳しくは The Procfile | Heroku Dev Center を参照してください。
データベースをバックアップする
よく使うコマンドをメモ
手動バックアップ
heroku pg:backups:capture --app ${app_name}
自動バックアップ
heroku pg:backups:schedule --at '09:00 Asia/Tokyo' --app ${app_name}
最新のバックアップをダウンロード
heroku pg:backups:download --output ~/Downloads/latest.dump --app ${app_name}
次回は、AWS RDS MySQL から PostgreSQL にデータ移行をする例を紹介します。
-
RDS MySQL8からHeroku PostgreSQL12へデータ移行する
前回は、Rails アプリケーションを Heroku にデプロイする方法を紹介しました。 今回は Amazon RDS ...
続きを見る