Rails5+MySQL+DockerをHerokuにデプロイする方法

Rails5+MySQL+DockerをHerokuにデプロイする方法について簡単にまとめておく。

環境

  • macOS Catalina 10.15.4
  • Ruby 2.5.3
  • Rails 5.2.4
  • MySQL 5.7
  • Heroku 7.39.1
  • Git 2.24.1

前提

  1. Rails5 + MySQLのDocker環境を作成し、ブラウザ上でlocalhost:3000にアクセスしてサーバーの起動を確認していること
  2. Herokuにクレジットカード登録をしていて、MySQLをHerokuで使えるようになっていること

Herokuへのデプロイ手順

STEP.1
アプリフォルダ直下(Gemfileと同じ階層)にheroku.ymlの作成
ターミナル
$ touch heroku.yml

アプリフォルダの直下にheroku.ymlファイルを作成。Gemfileやgitignoreなどと同じ階層。heroku.ymlは使っているテキストエディタで作成してもいいし、ターミナルから作成してもOK。touchコマンドはファイルを作成する時に使うコマンド。

heroku.yml
build:
  docker:
    web: Dockerfile
run:
  web: bundle exec puma -C config/puma.rb

作成したheroku.ymlには上記内容を記述。ファイルの内容はDockerfileに記述した内容にしたがってコンテナをHerokuにUpしてくださいね、そしてpumaも動かしてくださいね、という感じ

STEP.2
Herokuにログインする
ターミナル
$ heroku login

作成したheroku.ymlには下記内容を記述。途中でエンターキーを押すとブラウザが立ち上がる。ブラウザ操作でログインが終わると、ターミナルの方もログインできる。

STEP.3
Herokuのアプリケーションを作成する
ターミナル
$ heroku create

作成したheroku.ymlには下記内容を記述。ちなみに$ heroku create 好きな名前 でその好きな名前がアプリ名のURLに使える。

STEP.4
HerokuでMySQLを使用できるようにする
ターミナル
$ heroku addons:add cleardb:ignite --version=5.7

HerokuではPostgresQLが基本的に無料で使えるが、Herokuにクレジットカード登録されているとMySQLも使用できる。上記コマンドを入力。

Herokuの追加オプションであるcleardbというMySQL用を使えるようにするアドオンを入れてくださいね、igniteという無料のやつ。そしてMySQLのバージョンは5.7でお願いしますという感じ。

Heroku側の設定だとMySQL5.6が最初は設定されている。アプリで使っているバージョンを合わせないと接続エラーが起きることがあるので、バージョンは開発環境とデプロイする環境で合わせたほうがいい。

STEP.5
Heroku上でMySQLを使うための環境変数を設定する
ターミナル
$ heroku config:set DATABASE_URL=`heroku config:get CLEARDB_DATABASE_URL | sed -- s/mysql/mysql2/`

この辺りの設定はHeroku公式ホームページに記載されているとおりに進めている。気になる方は公式ホームページ要参照。

STEP.6
Heroku側でStackをcontainerにセットする
ターミナル
$ heroku stack:set container

Herokuにはコンテナをデプロイする方法がいくつかあるがHeroku.ymlを使ってデプロイするには上記コマンドが必要。これもHerokuの公式ホームページに乗っているので要確認。

STEP.7
Herokuにデプロイする
ターミナル
$ git init
$ git add -A
$ git commit -m "コミットメッセージ"
$ git push heroku master
STEP.8
デプロイできているか確認する
ターミナル
$ heroku open

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA