Herokuでデータベースを使う

HerokuはデフォルトでPostgreSQLベースの Heroku Postgres をDB管理サービスとして使えます。

Heroku Postgresを準備する前に、「まだ準備されていない」ことを確認しましょう。heroku addons コマンドでherokuアプリでHeroku Postgresが用意されているかどうかをチェックすることができます。

$ heroku addons 

このコマンドを実行して、何もリストが表示されない場合、準備されていないので以下コマンドで準備しましょう。

$ heroku addons:create heroku-postgresql:<PLAN_NAME>

<PLAN_NAME> にはHeroku Postgresのプランを記入します。

自分のアプリケーションによって適切なプランを選ぶことが必要ですが、今回は無料プランの hobby-dev を利用します。

※ その他のプランはこちら(英語版)

$ heroku addons:create heroku-postgresql:hobby-dev

Created postgresql-concave-xxxxx as DATABASE_URL と表示されていればOKです 🤗(xxxx には数値が入ります)

データベースの設定

heroku config コマンドを実行してデータベースURLの設定を確認します。

$ heroku config:get DATABASE_URL
postgres://<ユーザ名>:<パスワード>@<ホスト>:5432/<DB名>

heroku config コマンドで表示された設定を元に細かいデータベースの設定を行なっていきます。以下のコマンドを1つずつ実行してください。

<ホスト> などには heroku config コマンドで表示された結果に含まれる <ホスト> に書き換えてください。

$ heroku config:set DB_CONNECTION=pgsql
$ heroku config:set DB_HOST=<ホスト>
$ heroku config:set DB_DATABASE=<DB名>
$ heroku config:set DB_USERNAME=<ユーザ名>
$ heroku config:set DB_PASSWORD=<パスワード>

1つずつコマンドを実行して、以下のような結果(以下の例は DB_USERNAME )が表示されていればOKです 🤗

Setting DB_USERNAME and restarting ⬢ calm-caverns-xxxxx... done, v13
DB_USERNAME: ********

Migrationを実行

データベースの設定が完了したらmigrationを実行します。

$ heroku run php artisan migrate

コマンドを実行すると以下のように「本当に実行しますか?」と聞かれるので y または yes を入力してEnterを押してください。

Do you really wish to run this command? (yes/no) [no]

エラーが表示されていなければOKです 🎉

Migrationをもう一度実行する場合

$ heroku run php artisan migrate:refresh

まとめ

これでHerokuでデプロイしたアプリケーションでデータベースを使用することができるようになりました。

Herokuを使ってLaravelのアプリケーションをデプロイする方法はこちらの記事も参考にしてみてください。