今回は「Dockerで環境構築したRailsをHerokuにデプロイする方法」について解説します。
目次
事前準備
今回の環境はDockerでRails6の環境を構築しています。
環境手順は以下のページを参考にしてください。
【Docker】Rails6 × MySQL8で環境構築 Windows版
Dockerfileの追記
FROM ruby:2.7 ENV RAILS_ENV=production RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \ && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \ && apt-get update -qq \ && apt-get install -y nodejs yarn mariadb-client WORKDIR /app COPY . /app RUN bundle config --local set path 'vendor/bundle' \ && bundle install RUN bundle exec rails assets:precompile CMD bundle exec rails s -p ${PORT:-3000} -b 0.0.0.0
3、14、15行目を追記してください。
PostgreSQLをインストールする
「PostgreSQL」をインストールするために、Gemfileを修正します。
また、本番環境では「MySQL」は使わなくなるため、開発・テスト環境でのみ扱えるようにします。
PostgreSQLのインストール
group :production do gem 'pg', '~> 1.2', '>= 1.2.3' end
Gemfileの開発環境の場所に「PostgreSQL」を追加します。
MySQLをコメントアウト
# gem 'mysql2', '~> 0.5'
GemfileのMySqlの箇所をコメントアウトしてください。
開発・テスト環境にMySQLをインストール
group :development, :test do gem 'mysql2', '~> 0.5' end
Gemfileの開発・テスト環境の場所に「MySQL」をインストールします。
docker-compose build
docker-compose build
Gemfileを修正したので、「docker-compose build」を実行してください。
database.ymlの修正
production: <<: *default # database: app_production # username: app # password: <%= ENV['APP_DATABASE_PASSWORD'] %> adapter: postgresql encoding: unicode
「database.yml」の「production」の場所をを上記のように編集してください。
production.rbの編集
production.rbの2か所を編集してください。
config.public_file_server.enabledをtrueにする
# config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? config.public_file_server.enabled = true
config.public_file_server.enabledをtrueに変更してください。
config.assets.compileをtrueにする
# config.assets.compile = false config.assets.compile = true
config.assets.compileをtrueに変更してください
Railsの準備は終了
これでRails側の準備は終了です。
この記事は前半と後半の2部構成ですので、続きは以下のページに飛んでください。
Dockerで環境構築したRailsをHerokuにデプロイする方法-後編
後半では、Herokuの設定をしていきます。
以上です。ありがとうございました。