まずはHerokuのアカウントを作りましょう
https://id.heroku.com/login
Heroku CLIを入れる
$ brew tap heroku/brew && brew install heroku
Herokuがインストールできていることを確認
$ heroku -v
heroku/7.56.1 darwin-x64 node-v12.21.0
config/database.ymlを修正
productionの部分を修正
config/database.yml
production:
<<: *default
host: <%= ENV['DB_HOSTNAME'] %>
port: <%= ENV['DB_PORT'] %>
username: <%= ENV['DB_USERNAME'] %>
password: <%= ENV['DB_PASSWORD'] %>
database: <%= ENV['DB_NAME'] %>
heroku.ymlを作成
※Docker使用しない場合は作成しなくて良い
heroku.yml
build:
docker:
web: Dockerfile
run:
web: bundle exec puma -C config/puma.rb
Herokuでアプリケーションを作成
$ heroku create
リモートに接続
heroku git:remote -a <アプリ名>
HerokuでMySQLを使用する際はcleardbに変更するため下記のコマンド
$ heroku addons:create cleardb:ignite
コンテナをherokuにデプロイ
$ heroku stack:set container
Herokuアプリの環境変数設定
まずは設定を確認
$ heroku config
=== <アプリの名前> Config Vars
CLEARDB_DATABASE_URL: mysql://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true
上記コマンドで表示されたそれぞれの値を変数に設定
$ heroku config:add DB_NAME='<データベース名>'
$ heroku config:add DB_USERNAME='<ユーザー名>'
$ heroku config:add DB_PASSWORD='<パスワード>'
$ heroku config:add DB_HOSTNAME='<ホスト名>'
$ heroku config:add DB_PORT='3306'
$ heroku config:add DATABASE_URL='mysql2://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true'
$ heroku config:add CLEARDB_DATABASE_URL='mysql2://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true'
もう一度設定を確認しましょう。下記のように表示されていたらOK
$ heroku config
=== <アプリの名前> Config Vars
CLEARDB_DATABASE_URL: mysql2://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true
DATABASE_URL: mysql2://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true
DB_HOSTNAME: <ホスト名>
DB_NAME: <データベース名>
DB_PASSWORD: <パスワード>
DB_PORT: 3306
DB_USERNAME: <ユーザー名>
Container Registryにログイン
$ heroku container:login
Container Registryにdocker imageをpush
$ heroku container:push web
HerokuにPush
$ git push heroku main
Herokuのmigrate:status確認
$ heroku run rails db:migrate:status
Herokuでmigrate
$ heroku run rails db:migrate
Webサイトを開く
$ heroku open
ご自身のアプリが表示されれば完了!