5
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

Ruby on Rails + MySQLのアプリケーションをHerokuにデプロイする手順(Heroku.yml)

どんな記事か

  • Rails+MySQLのアプリケーションをDockerで環境構築した人が、herokuで本番環境を構築できるようになる。

対象読者

  • DockerでRails+MySQLを起動して、「Yay! You’re on Rails!」を表示している人。
  • 本番環境にも反映して誰からにも見せたい人。
  • デプロイのエラーで躓いて困っている人。

完成後のイメージと各ツールのバージョン

今回こちらの実機で確認しました。
- macOS Mojave 10.14.5
- Ruby 2.6.3
- MySQL 5.7
- Heroku 7.29
- Git 2.20.1

localhost_3002_.png

そもそもどうやって、DockerでRails+MySQLの環境構築をすればいいのという方へ??

こちらのgithubのページで、確認してもらえたらと思います。。
https://github.com/YutakaYamasaki/docker_setup_rubyonrails

ちなみに、今回のソースは全て上記の手順を行なった後、デプロイする形になります。

やること

  • Railsのアプリケーション修正、追加
  • Herokuにデプロイ

Railsアプリケーションのファイルを修正、追加する。

Gemfile(修正、追加)

ここで、mysqlとpgのgemを修正、追加します。
開発環境ではMySQLを使用しますが、本番環境(デプロイ)ではPostgreSQLを使用していきます。

変更前と変更後です。

Gemfile
##変更前
gem 'mysql2', '>= 0.4.4', '< 0.6.0'

##変更後
gem 'mysql2', '>= 0.4.4', '< 0.6.0', groups: %w(test development), require: false
gem 'pg', '~> 0.19.0', group: :production, require: false

database.yml(修正、追記)

こちらのファイルにも、本番環境ではPostgreSQLを使用するので、下記のように修正してください。
productionの項目がなければ、追記してください。
項目があれば、削除してください。

database.yml
production:
  <<: *default
  adapter: postgresql
  encoding: unicode
  pool: 5

heroku.yml(新規ファイル作成)

heroku.ymlファイルを作成します。
アプリのファイルの直下に、heroku.ymlファイルを作成して、下記のように記載してください。

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

これで各ファイルの編集が完了しました。
Docker側にもファイルの変更を反映させておきましょう。

$ docker-compose build

誤字脱字がないか確認した後に、
Herokuへデプロイを進めましょう!

Herokuにデプロイ

基本全てターミナルで行います。ターミナルの操作に慣れているという前提で進めていきます。

Herokuにログイン

下記のコマンドを打ちます。
途中でエンターキーを押すとブラウザが立ち上がるので、ブラウザで操作してログインが終わると、
ターミナルの方でもログインができます。

$ heroku login                                                                                                               
heroku: Press any key to open up the browser to login or q to exit: 
##ここでエンターキーを押すとブラウザが開くので、ログインを行う。

##ブラウザでログインができてターミナルに戻ると、下記が表示されるはず
Opening browser to https://cli-auth.heroku.com/auth/browser/**************
Logging in... done
Logged in as *******@email.com

Herokuにアプリケーションを作成する。

下記のコマンドを打ちます。
すると、URLが自動発行されます。

$ heroku create
##ちなみにcreateの後にスペースキーを押して、好きなアプリ名を入力すると、そのアプリ名のURLが自動発行されます。お試しあれ
Creating app... done, ⬢ *******
https://******.herokuapp.com/ | https://git.heroku.com/*******.git

Heroku側でPostgreSQLを使用する。

Heroku側でPostgreSQLを使用するように設定します。
クレジットカードを登録したり、有料会員になるとMySQLも使用できます。

$ heroku addons:create heroku-postgresql:hobby-dev                                                                             
Creating heroku-postgresql:hobby-dev on ⬢ ******... free
Database has been created and is available
 ! This database is empty. If upgrading, you can transfer
 ! data from another database with pg:copy
Created postgresql-transparent-70433 as DATABASE_URL
Use heroku addons:docs heroku-postgresql to view documentation

ちなみに、このURLにアクセスしてもエラーが出てきます。なぜなら、アプリがHeroku側にないから。
これからアプリをheroku側にアップロードして、デプロイします。

Heroku.ymlを使ってデプロイする。

Herokuではコンテナ諸々をデプロイすることができます。
その中で、デプロイする方法は2通りあります。
- Container Registry GAを使用してデプロイ
- Heroku.ymlを使用してデプロイ←今回はこちらを使用。

詳細は下記見てもらえると
https://devcenter.heroku.com/categories/deploying-with-docker
まずは、Heroku側でStackをcontainerにセットします。

$ heroku stack:set container

その後、下記のコマンドを打って、デプロイをしましょう。

$ git init
$ git add .
$ git commit -m "******"
$ git push heroku master

デプロイできたか確認する。

下記のコマンドでブラウザが立ち上がり、Railsのアプリケーションがデプロイされているか確認します。

$ heroku open

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
5
Help us understand the problem. What are the problem?