##参考サイト
Docker超入門 :きよとのプログラミング大学
#####参照
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