DockerでRubyonRailsの作成

 はじめに

毎回毎回Dockerで調べながら、railsの環境を用意して

簡単にmocやらテストアプリを作成するんだけど

同じことやってるだけなのに調べて作るのに時間かかりすぎて

簡単に上からやればできるよってのが欲しかった

 

最終的にスクリプトかなんかにして叩けばできるようにしておきたい

 

 

何が必要か

  • docker

  • docker-compose 

  • ruby 1

  • DB2

 

作成ファイル

Dockerfile docker-compose.yml Gemfile Gemfile.lock

上記4つは必須

一括作成のコマンドは以下

touch Dockerfile docker-compose.yml Gemfile Gemfile.lock

設定ファイルを編集する前に

いろいろ選定が必要な為記述

ruby&rails

なんかどっかのサイトでこれとこれが安定してるとか このバージョンとこのバージョンねとか 今よく使われてるのはこれとこれねとか 簡単に見れた気がしたんだけど紛失

DB

リリースノートとか見てあれがいいとかこれじゃなきゃだめだとか そういうのあると思うけど 僕みたいな底辺エンジニアには選定がよくわからん mysqlなら5.6.x系とかを雰囲気でつかっている posgreなら9.6とか?最新でいいかもしれんけど 基本的に最新のを使って行きたいけど 他ツールとかの兼ね合いで難しくなることも多い

マイクロサービスならmysql 多少長く運用するつもりならposgre 他のDBは資金によって選択かなぁ そりゃoracleとかバシバシ使ってみたいっちゃみたいけど 高すぎて個人サービスとかで選択する利点ないよね

PostgreSQLとMySQL、使うならどっち? データベース専門家が8つの視点で徹底比較! - エンジニアHub|若手Webエンジニアのキャリアを考える!

dockerfile

FROM  ruby:2.6.3
ENV TZ Asia/Tokyo
ENV LANG C.UTF-8

RUN apt-get update -qq && apt-get install -y \
    build-essential \
    nodejs \
 && rm -rf /var/lib/apt/lists/*

RUN gem install bundler

# 作成場所のディレクトリtmpでインストールが早くなるらしい
WORKDIR /tmp
ADD Gemfile Gemfile
ADD Gemfile.lock Gemfile.lock
RUN bundle install

ENV APP_HOME /myapp
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME
ADD . $APP_HOME

docker-compose

version: '3'

services:
  web:
    build: .
    ports:
      - "3000:3000"
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
      - bundle:/usr/local/bundle
    depends_on:
      - db
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password
 # MYSQL_ALLOW_EMPTY_PASSWORD: "yes"  パスワードなし
    ports:
      - '3306:3306'
    volumes:
      - mysql_data:/var/lib/mysql
volumes:
  bundle:
  mysql_data:

api作成時とかで違う

Gemfile

source 'https://rubygems.org'

gem 'rails', '5.1.4'

おいおい追記

プロジェクトの作成

docker-compose run web bundle exec rails new . --force --database=mysql --skip-bundle

  1. rubyrailsのversinonに選定が必要

  2. DBの選定MySQL>PosgreSQL>SQLServer>Oracle