herokuにローカル環境から直接デプロイ(Rails + Docker)
使用したリポジトリ
GitHub - ysirman/deploy-rails-to-heroku: Railsアプリをherokuにデプロイする練習
herokuへのデプロイ手順
参考
Container Registry & Runtime (Docker Deploys) | Heroku Dev Center
Rails on DockerをHerokuでDeployするまで - Qiita
How to Containerize and Deploy Apps With Docker and Heroku | by Chris I. | Better Programming | Medium
# mac でheroku CLIインストール brew tap heroku/brew && brew install heroku # ログイン heroku login # Container Registryにログイン heroku container:login # 好きなアプリ名でアプリ作成 heroku create [アプリ名] # 現在のディレクトリのDockerfileを元にimage作成。Container RegistryへPush。 heroku container:push web # 無料で使えるpostgresqlを追加 heroku addons:create heroku-postgresql:hobby-dev # リリース heroku container:release web # アプリ削除 heroku apps:destroy --app アプリ名 # 環境変数の追加 heroku config:add RAILS_ENV=production
Railsコマンドでの作業
heroku run ****
としてコマンドを実行できる。
# DB関連(DBはaddon追加時に作成されている) heroku run rails db:migrate heroku run rails db:seed # 静的ファイルの準備 heroku run rails assets:precompile
最後の確認
# ブラウザでアプリを開く heroku open
補足情報
現在のディレクトリにあるDockerfile
でビルドされる。
heroku container:push web
=== Building web (/****/work/deploy-test/Dockerfile) Sending build context to Docker daemon 91.55MB Step 1/11 : FROM ruby:2.7.1 以下省略
他のプロセスタイプを利用したければ、Dockerfile.workerとしてプロセスタイプ名を指定
Container Registry & Runtime (Docker Deploys) | Heroku Dev Center
heroku container:push worker
DBの作成・削除はできないらしい
ruby on rails - Postgres db not working on Heroku - Stack Overflow
You cannot create a database on Heroku using db:create (you cannot drop it neither). Your database is created when you add an add-on (such as Heroku Postgres). You can only migrate and seed. And if you want to start over, you can use pg:reset (instead of drop and create)
遭遇したエラー
エラーログ確認方法
heroku logs --tail
アプリが起動しない1
heroku[router]: at=error code=H10 desc="App crashed"
Rails関連のログも出ていない場合、コマンドが間違ってるかも。
ここのコマンドが
web irb
とかになってると、Rails が起動しないので注意。
Dockerfileに実行するコマンドを明記すること。
(私の場合は、docker-compose.yml
のcommand
に記述して安心してたら忘れました、、)
Rails ならDockerfile
に、このコマンドが必要↓
# Start the main process. CMD ["rails", "server", "-b", "0.0.0.0"]
アプリが起動しない2
heroku[router]: at=error code=H14 desc="No web processes running"
dynoが無いらしいので下記コマンドを実行 Heroku Error Codes | Heroku Dev Center
heroku ps:scale web=1