はじめに
- Dockerで作成したRailsアプリをアップロードするための忘備録です。
- Railsアプリの作成方法は、以下の記事で紹介しています。
【Imagemagick対応】Dockerを利用して、Rails環境を作成
https://qiita.com/NA_simple/items/5e7f95ae58eec5d20e1f
- Heroku側の状態
- ユーザー登録およびログインが完了した状態からスタートします
- Heroku CLI を使います。
- Downloadページはこちら
- https://devcenter.heroku.com/articles/heroku-cli#download-and-install
Herokuアプリの作成
-
Dockerコンテナを動かすためのアプリを作成します
-
Herokuのトップページにアクセスしてログイン
-
[ New ]ボタン→ [ Create new app ]を選択
- App nameを決めます
- この記事では例として、
abcdefgapp
とします
- この記事では例として、
- これでアプリの新規作成ができました
DBの追加
- DBはHerokuのadd-onを使用します
- 先ほど作成したアプリ
abcdefgapp
のページに行きます- Installed add-ons には何もない状態です
-
Configure Add-ons
をクリック
- 検索窓に
heroku postgres
と打って、選択します
- ※Plan name では有料・無料オプションを選択できます
- 今回は課金しないので、Hobby Devです
- DBコンテナの準備は完了です。
コンテナをHerokuにプッシュ
- プッシュするRailsコンテナは、こちらの記事 で生成しています
- プッシュする前に、必ずコンテナを停止してくださ
い- (docker-compose stop や down 等)
- heroku CLIを使用します
- RailsのDockerファイルを置いているディレクトリに移動します
herokuにlogin
- 次の2つのコマンドを入力
$ heroku login
$ heroku container:login
作成したHeroku app上にコンテナをpush
$ heroku container:push web -a [アプリ名]
$ heroku container:release web -a [アプリ名]
- ※ ここでの [アプリ名]とは、herokuアプリの作成 で作成したアプリ名のことです
- 本記事では、
abcdefgapp
という名前で作成しました
- 本記事では、
コンテナとpostgreSQLを結びつける
$ heroku addons:attach [postgresコンテナ名] -a [アプリ名]
- ※ postgresコンテナ名とは、DBの追加の際に記録しておいたコンテナ名です
- 本記事では
例) postgresql-fluffy-97609
でした - 分らない方は、記事上部の DBの追加 欄をご確認ください
- 本記事では
マイグレーションの実行
$ heroku run rake db:migrate -a [アプリ名]
アプリのオープン
$ heroku open -a [アプリ名]
ここまでのコマンドまとめ
$ heroku login
$ heroku container:login
$ heroku container:push web -a abcdefgapp
$ heroku container:release web -a abcdefgapp
$ heroku addons:attach postgresql-fluffy-97609 -a abcdefgapp
$ heroku run rake db:migrate -a abcdefgapp
$ heroku open -a abcdefgapp
- 自分のアプリ名に書き直して、メモ帳などに保存すると使いまわせます
- ※
permission denied
等のエラーが出る際は、- heroku container:login 等を再度実行ください
動作確認
- herokuのアプリページ(ここでは abcdefgapp )を開く
- 右上の Open app をクリックするとプッシュしたページが開く
- Yey! you are on Rails!
- アドレスが
abcdefgapp.heroku.com
になっています
前の記事
【Imagemagick対応】Dockerを利用して、Rails環境を作成
https://qiita.com/NA_simple/items/5e7f95ae58eec5d20e1f