概要
初めてDockerやTravis CIを使ってデプロイしたので流れとエラーをまとめておきます。
誰かの参考に慣れば・・・
Dockerの勉強はUdemyのこちらの動画で勉強しました。
初心者にもかなりわかりやすく説明されているのでお勧めです。
※この動画ではpostgesqlを使う方法が紹介されていますが、僕は開発環境も含めmysqlを使ってので違いなどもメモしておきます。
環境設定
・Docker
・rails 5.2
# 大まかなデプロイ時の流れ
- TravisCIに登録し、GitHubと連携
- .tarvis.yml ファイルを書く
- Travis CIにビルド
- Herokuでアプリ作成
- Heroku と Travis CI に環境変数を設定する。
# 2つのエラー
## mysql2が読み込まれない
Herokuにデプロイした際に、Build failedとなってしまいました。
ブラウザからHerokuのリポシトリーのActivityにあるBuild log を見ると以下のところでエラーになっているようでした。
LoadError: Could not load the 'mysql' Active Record adapter. Ensure that the adapter is spelled correctly in config/database.yml and that you've added the necessary adapter gem to your Gemfile.
これはブラウザのHerokuのリポジトリーのsettingsのConfig Varsを開き、
CLEARDB_DATABASE_URL : mysql://~~
となっているところを
CLEARDB_DATABASE_URL : mysql2://~~
と変更すると直ります。デフォルトではmysqlが書かれてしまうんですかね?
## DBがない!?
Herokuのアプリの画面に移動した際、We're sorry, but something went wrong.
というエラー表示がされてしまいました。
これはローカルからHerokuへとアクセスし
$ heroku logs -t
でログを見てみると
ActiveRecord::StatementInvalid (Mysql2::Error: Table 'heroku_067b02b8d8fb0b9.users' doesn't exist: SHOW FULL FIELDS FROM `users`):
となっていて、DBができていないようなので、マイグレーションして解決しました。
$ heroku run rails db:migrate
※ travis.yml ファイルにデプロイの際に、マイグレーションするように書いたはずなんだけどなー。なぜかうまく行っていなかったですね。