ムカデノワラジ

ムカデノワラジ

ガジェット・Webサービス・プログラミング・エンタメについて書く雑記ブログ

MENU

windows10 home&virtualbox&docker で rails&mysql project 開発環境構築

windows10・docker・virtualboxrailsmysqlのappのひな型を作った時の記録
詳細などは割愛

時間があるときに詳細や説明は追加予定


ファイルを置くディレクトリを作成する (create project root dir)
このディレクトリには最初Gemfileと空のGemfile.lockを置く(first, add Gemfile bellow & empty Gemfile.lock in this dir)

$mkdir myapp

myapp は 任意の名前に変更可能

Dockerfile
※apt-get install ~でmysql-client が無いとmysql利用時にエラーが出た (error occurred without apt-get install mysql-client )
※ RUN mkdir でdocker コンテナ内にホストのmyappに対応するフォルダを作っている( [RUN mkdir] creates myapp folder in docker container)

FROM ruby:2.4.2
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev mysql-client nodejs
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN bundle install

Gemfileを用意する(手書きか、ローカルにrailsが入ってるならbundle init)
Gemfile
(copy and paste this or bundle init if ruby&rails available in host)

source 'https://rubygems.org'
gem 'rails', '5.1.4'

 

$touch Gemfile.lock

※touch コマンドで空のファイルを作れる(add empty Gemfile.lock by touch command)
docker のコンテナの構成はdocker-compose.ymlに書く(write docker containers settings in docker-compose.yml)
mysql は5.7未満を使わないとエラーが出た。(error occurred when using mysql version 5.7 or more )
portsを他のプロジェクトなどで利用している場合はports番号を変更する(change ports (3000:3000) to XXXX:XXXX if other project uses 3000 ports)
※volumes の部分でデータの永続化やホストのファイル共有を行っている
※depend_on を利用するとdbが起動してからwebが起動するようになる
docker-compose.yml

version: '3'
services:
  db:
    image: mysql:5.6.38
    environment:
      MYSQL_USER: root
      MYSQL_ROOT_PASSWORD: password
    ports:
      - '5432:5432'
    volumes:
      - ./db/mysql/volumes:/var/lib/mysql


  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
    - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db

 

 

$ docker-compose run web rails new . --force --database=mysql

※新規プロジェクトを作る場合は以下のコマンドが必要(build command necessary when creating new project)

$ docker-compose build

※docker-compose buildコマンドを実行するとbundle install も行われる($docker-compose build -> bundle install done automatically in
web container )
※myapp 以下にrailsが自動生成したファイル群ができるので、config/database.ymlのdefaultを以下のようにする(edit config/database.yml in myapp folder like this)

default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: password
host: db

 

$ docker-compose up

※gemfileにturbolinlsまたはtherubyracerが無いとエラーが起きた(without turbolinks gem or therubyracer gem, error occurred)

※docker-compose.ymlに従って、コンテナが構成される

$ docker-compose run web rake db:create

dockerコンテナを停止した状態で

docker-compose run --rm web rails g scaffold ModelName Element1:Type Element2:Type .....
でscaffold実行
docker-compose run --rm  web rake db:migrate
でmigrate
再度docker-compose up (-d) 
http://IP address.Port/ModelNamesで確認