参考サイト
参照
Rails環境構築 with Docker
こちらでDockerを使用したRailsの環境構築までを行っております。
Docker 用語とコマンド
Dockerについての用語やコマンドについてはこちらをご覧ください
環境
Mac OS
docker-compose 1.27.4
heroku/7.47.7
Mysql 8.0
ruby 2.7
rails 6.1.0
heroku実装
herokuログイン
terminal.
rails_on_docker % heroku login
heroku: Press any key to open up the browser to login or q to exit: //Enterキーでログイン
rails_on_docker % heroku container:login
herokuアプリ作成
terminal.
rails_on_docker % heroku create <rails-koumori> // < >内は任意の名前を指定
データベース追加・設定
データベースの追加
terminal.
rails_on_docker % heroku addons:create cleardb:ignite -a rails-koumori
本番環境の接続先情報を環境変数に修正
database.yml
production:
<<: *default
database: <%= ENV['APP_DATABASE_DATABASE'] %>
username: <%= ENV['APP_DATABASE_USERNAME'] %>
password: <%= ENV['APP_DATABASE_PASSWORD'] %>
host: <%= ENV['APP_DATABASE_HOST'] %>
接続先情報を環境変数に設定
terminal.
rails_on_docker % heroku config -a rails-koumori
CLEARDB_DATABASE_URL: mysql://ユーザー名:パスワード@ホスト名/データベース名?reconnect=true
rails_on_docker % heroku config:add APP_DATABASE='データベス名'-a rails-koumori
rails_on_docker % heroku config:add APP_USERNAME='ユーザー名' -a rails-koumori
rails_on_docker % heroku config:add APP_PASSWORD='パスワード' -a rails-koumori
rails_on_docker % heroku config:add APP_HOST='ホスト名' -a rails-koumori
rails_on_docker % heroku config -a rails-koumori //登録の確認
本番環境用の記述
空のファイル作成
terminal.
rails_on_docker % touch start.sh
start.sh
# !/bin/sh
# 本番環境
if [ "${RAILS_ENV}" ="production" ]
then
bundle exec rails assets:precompile
fi
bundle exec rails s -p ${PORT:-3000} -b 0.0.0.0
Dockerfileの追記
Dockerfile
# ベースイメージの指定
FROM ruby:2.7
# 追記
ENV RAILS_ENV=production
.
.
.
.
# dockerにコピー
COPY start.sh /start.sh
# 実行権限を付与
RUN shmod 744 /start.sh
# 起動時に実行
CMD ["sh","/start.sh"]
本番環境に適用
terminal.
rails_on_docker % heroku config:add RAILS_SERVE_STATIC_FILES="true" -a r
ails-koumori //本番環境にassets:precompileを適用
rails view画面実装
コントローラー作成
terminal.
rails_on_docker % docker-compose exec web bundle exec rails g controller users
トップページにusers/indexを指定
routes.rb
Rails.application.routes.draw do
get '/',to: "users#index"
end
コントローラーの記述
users.controller.rb
class UsersController < ApplicationController
def index
end
end
index.html.erbファイルを作成し記述
src>app>views>users>index.html.erb
<h1>Hello world!</h1>
Dockerコンテナのプッシュとherokuへのリリース
Dockerイメージをビルドしコンテナにプッシュ
terminal.
rails_on_docker % heroku container:push web -a rails-koumori
herokuにコンテナをリリース
terminal.
rails_on_docker % heroku container:release web -a rials-koumori
herokuを起動しブラウザで確認
terminal.
rails_on_docker % heroku open -a rails-koumori
まとめ
前回のRails構築から、今回でデプロイまで完了できました。