利用環境
- Docker18.09.1
- Rails5.2.2
- Ruby2.5.3
- Mac OS Mojave10.14.3
dockerのherokuデプロイ
Railsとdocker環境を利用している場合、herokuへのデプロイのやり方は通常と少し異なります。
例えば、
heroku push origin master
上記は、おなじみのデプロイ方法かと思いますが、docker利用の場合は、使えません。
では、どうするか?
@akirakudo
さんの記事を参考にします。
dockerのherokuデプロイ手順
まず、dockerコンテナを削除します。
docker-compose down
次に、herokuへログインします。
heroku login
herokuに登録がお済みでない方は、ここで登録をお願いします(クレジットカード情報の登録まで必要です)。
続いて、herokuコンテナへログインします。
heroku container:login
herokuにてアプリを作成します。
heroku create
そして、dockerイメージをビルドし、herokuアプリへpushします。
コンテナを削除しますが、ここでイメージをビルドするので、現時点の状態がherokuへ反映されます。
heroku container:push web
dockerのデータベースにPostgreSQLを利用しますので、herokuにてadd-onを取得します。
この辺りの感覚は、実際にherokuのアプリページをみた方がイメージしやすいかもしれません。
heroku addons:create heroku-postgresql:hobby-dev
hobby-devのadd-onは無料で使用できますから、ご安心ください。
そして、herokuにアプリをリリースします。
heroku container:release web
herokuアプリを起動します。
heroku open
感じた疑問点
ここで、私が感じた疑問点は、以下の2つです。
- heroku.yml
ネット上でdockerのherokuデプロイにheroku.ymlファイルを作成するやり方がありました。
これは、最近リリースされた機能のようで、こちらの方法でもデプロイできるようです。
heroku公式
- database.yml
あと、Railsのdatabase.ymlでのproductionに関する記述が、herokuで反映されていないことも疑問でしたが、どうやら、herokuがそこを書き換えるようです。
以上が、herokuでのdockerコンテナのpush方法でした。
次回は、heroku.ymlでデプロイしたいと思います。