プログラミング備忘録

プログラミングメモ

Docker Heroku Ruby・Rails

Dockerで環境構築したRailsをHerokuにデプロイする方法-前編

docker rails heroku

今回は「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の設定をしていきます。

 

以上です。ありがとうございました。

 

-Docker, Heroku, Ruby・Rails

Copyright© プログラミングメモ , 2022 All Rights Reserved Powered by AFFINGER5.