Help us understand the problem. What is going on with this article?

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

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. 参考にさせていただいたページ

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした