Linux環境からherokuに(Ruby on Rails + PostgreSQL) on Dockerのアプリをデプロイした回

Rails + postgresql on Dockerのデプロイでよくわからなかったり引っかかった部分についてでも備忘録がてら上げときます。RoR+PostgreSQL on Dockerのローカル環境構築も中々に手間取ったのでそっちも気が向いたら書きます。

筆者の環境

  • Manjaro Linux 18.1.3
  • docker 19.03.40ce build 9013bf583a
  • docker-compose 1.24.1

Arch Linuxへのherokuの導入

公式のAURがあるのでそちらから導入。

導入

git clone https://aur.archlinux.org/heroku-cli.git
cd heroku-cli
makepkg -si

バージョン確認

heroku -v

herokuにRails + Postgresqlのアプリをデプロイする

あらかじめ

docker-compose down

しておきましょう。

作業しているディレクトリ(Dockerfileのあるディレクトリ)に移動します。ここではとりあえずappフォルダということにしておきます。

cd app

herokuにログインする

heroku login

コマンドを実行するとブラウザが立ち上がり、herokuへのログインを求められます。 ログインに成功した感じになったらheroku containerへのログインをします。

heroku container:login

herokuアプリを作成する

heroku create

heroku containerにdockerイメージをpushする

コマンド実行時にイメージをビルドしてくれるみたいなので、sudo権限を渡してあげないとパーミッション周りで失敗します(少なくとも自分のManjaro Linux環境では失敗)

sudo heroku container:push <コンテナ名>

アドオンを追加する

自分はPostgreSQLを利用したのでアドオンを追加してやります。余談ですが、アドオンの追加は無料のものでも、クレジットカードの登録が必要だった気がするんですが、いつのまにか不要になっているように見えます。

heroku addons:create heroku-postgresql:hobby-dev

動かす

でherokuにリリースする。何やってるのかはいまいちよくわかってないんですけど(ダメじゃん)、pushしたやつを動かすっぽいです(多分) Release Phase

heroku container:release <コンテナ名>

であとはデータベースのマイグレーションrailsコマンドでやっておきます(上の参考ページを見た感じだと自動でやってくれるっぽい事が書いてあるんですけど、実際どうなんですかね)

heroku run rails db:migrate

動作確認

heroku open

を実行すると実際に動いているページがブラウザで開きます。

感想

権限まわりで引っかかるたびにsudoでごり押すのって美しくない感じがある・・・