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でごり押すのって美しくない感じがある・・・