DockerでRuby/Ruby on rails/mysqlの環境構築からデプロイまでできたのでメモしておきます。
#(1)Dockerfile作成
Dockerfile
FROM ruby:2.5.3
RUN apt-get update -qq && \
apt-get install -y build-essential \
libpq-dev \
nodejs
RUN mkdir /app_name
ENV APP_ROOT /app_name
WORKDIR $APP_ROOT
ADD ./Gemfile $APP_ROOT/Gemfile
ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock
RUN bundle install
ADD . $APP_ROOT
#(2)docker-compose.yml作成
docker-compose.yml
version: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: root
ports:
- "3306:3306"
volumes:
- .mysql-data:/var/lib/mysql
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/app_name
ports:
- "3000:3000"
links:
- db
#(3)Gemfile作成
Gemfile
source 'https://rubygems.org'
gem 'rails', '5.2.2'
#####Gemfile.lockも作成
$ touch Gemfile.lock
#(4)新しいアプリを作成
$ docker-compose run web rails new . --force --database=mysql --skip-bundle
####databese.ymlを編集
database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: password
host: db
####Gemfileをbundle install
$ docker-compose run web bundle install
#(5)コンテナをビルドと起動
$ docker-compose build # コンテナをビルド
$ docker-compose up # コンテナの一斉起動
####※bundle installの後にbuildする
#(6)DB作成
$ docker-compose run web rails db:create
####DBを作らないとエラーが出る
####DBを作成後localhost:3000で初期画面が表示される!
#()Herokuでデプロイ
####herokuの登録,heroku cliはインストール済みとする
##Herokuにアプリ作成
$ heroku create
##データベースをMySQLに変更
$ heroku addons:add cleardb
####ClearDBアドオンとは,ClearDBというデータベースサービスが提供している,MySQLを使うためのもの。
$ heroku config | grep CLEARDB_DATABASE_URL
#####mysql:// 〜 reconnect=true
がデータベース情報
####mysql
の部分をmysql2
に変更
####環境変数を変更
$ heroku config:set DATABASE_URL=mysql2:// 〜 reconnect=true //先ほどのデータベース情報全部
$ git add .
$ git commit -m "update for upload to heroku"
##アプリをデプロイ
$ git push heroku master
##マイグレーションファイル作成
$ heroku run rake db:migrate