LoginSignup
2
0

More than 3 years have passed since last update.

Docker-based deployments to heroku of Rails App(postgres) 2020.02

Last updated at Posted at 2020-02-22

Overview

ここに書くこと

  • Dockerコンテナ上で動作するRailsアプリケーションに関する話です
  • Railsアプリケーションをherokuにデプロイする話です
  • dbはpostgreSQLを使います

Prerequisite

  • 以下の開発環境が出来上がっている
    • railsサーバー, dbサーバー用のdockerコンテナ(postgreSQL)のみ
    • docker-composeでコンテナ同士が協調している
  • ローカルでrailsアプリが正常動作している
    • rails s + ブラウザにてWebページの確認ができる

System

  • Docker
    • ver: 19.03.5, build 633a0ea
  • Docker-compose
    • ver: 1.25.2, build 698e2846
  • heroku CLI
    • ver: 7.36.3 darwin-x64 node-v12.13.0

Table of Contents

  1. Conclusion
  2. -aオプションが必要
  3. dbコンテナはherokuのアドオンを使う
  4. 参考にさせていただいたページ

Main

1. Conclusion

まず、結論です。以下の順にコマンドを打てば良いです。

docker-based-deployments-to-heroku(rails-app)
# webサービスイメージをherokuにpush
heroku container:push web -a myapp
# postgresql用add-onを作成する(大事)
heroku addons:create heroku-postgresql -a myapp
# webサービスコンテナをリリース(heroku上でコンテナを実行する?)
heroku container:release web -a myapp
# heroku上でdbのマイグレーション
heroku run rails db:migrate -a myapp
# デプロイしたWebページを開く
heroku open -a myapp

基本的には、参考にさせていただいたサイト通りなのですが、
いくつかそのままでは実行できない箇所があったので以下記述します。

2. -aオプションが必要

おおよそ全てのコマンドにおいて、
デプロイ対象のインスタンス(herokuではdynoと呼ばれる)の名称を指定する必要があります。
名称は、herokuのマイページでも確認できますし、CLIでheroku appsと入力しても確認できます。

ダメな例
heroku container:push web

と入力すると

エラーメッセージ
 ›   Error: Missing required flag:
 ›     -a, --app APP  app to run command against
 ›   See more help with --help

というエラーメッセージが出るので、-a オプションで指定します。

良い例
heroku container:push web -a myapp

3. dbコンテナはherokuのアドオンを使う

herokuではvolumeが使えません。
したがって、PostgreSQLはherokuのアドオンを利用して、
webコンテナと接続させます。その設定が heroku addons:create heroku-postgresql -a myapp です。

4. 参考にさせていただいたページ

本記事は必要最小限の内容しか記述していません。
以下に有用な情報があります。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0