Windows10 + Docker環境でRuby on Railsの環境を作る方法

どうも、りーずです。

Windows10 + Docker環境でRuby on Railsの環境を作る方法です。

DockerというのはWindowsやMacでLinuxの仮想環境をカンタンに作れるもので、いまではアプリをインストールするだけで使えるようになります。

詳しくは

Windows10 ProでDockerを使ってみる。Docker Desktop for Windows。【メモ】

こちらの記事をどうぞ。

さて、このDesktop for Windowsをインストールし、Dockerが起動できるようになってから実際にRuby on RailsをDocker経由で動かす方法です。

実際に動作した時にツイートしたものがこちら。

ツイートに書いてあるものがすべてです。

【Windows】DockerでRuby on Rails開発環境構築方法
https://omathin.com/2020/12/29/docker-ruby-on-rails/

基本的に、こちらの記事の通りに行い、
docker-compose.ymlファイルで
image: mysql:5.

となっている部分を

image: mysql:5.7

というふうに、5.7を指定してあげます。(MySQLの5の最新バージョンは5.7だからです)

環境構築には

・Dockerfile
・Gemfile
・Gemfile.lock
・docker-compose.yml

の4つのファイルを自分で作ります。


具体的なコード

・Dockerfile

FROM ruby:2.6.7
RUN apt-get update -qq && apt-get install -y build-essential nodejs
RUN mkdir /app
WORKDIR /app
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock
RUN bundle install
COPY . /app

・Gemfile

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

最初はこれだけでOK。
DockerfileにあるRUN bundle installが実行されるとGemfileが書き換えられます。
(この記事の時点で最新のRails 5.2.6でプロジェクトが作られました)

・Gemfile.lock

Gemfile.lockは空のものを用意します。
コマンドを実行することで、中身が作られます。

・docker-compose.yml

version: '3'
services:
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app
    ports:
      - 3000:3000
    depends_on:
      - db
    tty: true
    stdin_open: true
  db:
    image: mysql:5.7
    volumes:
      - db-volume:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
volumes:
  db-volume:

このようにファイルを用意したら

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

このコマンドを実行。
さらに

docker-compose build

を実行します。

database.ymlの中身で

password:
host: localhost

となっている部分を

password: password
host: db

このように変更します。
パスワードとホスト名を、docker-compose.ymlに記載したものと合わせるためです。

あとは
docker-compose up -d

というコマンドでRailsサーバーのコンテナとMySQLサーバのコンテナを起動させます。

そうしたら、

docker-compose run web bundle exec rake db:create

というコマンドで、データベースを作成します。

ひとまずこれでうまく動いてくれたので、メモ的に残しておきます。

mysql2というmysql接続用のGemの開発が2021年5月時点ではストップしています。

なので、Rubyのバージョンは2.6系の最新の2.6.7を選びました。

以上、簡単なメモでした。

また、こちらのYouTube動画ではMySQL8.0での環境構築方法を解説されているので貼っておきます。


その他、参考にさせていただいた記事:

・WindowsでDocker+Rails(MySQL)環境を作る+便利なツール紹介https://qiita.com/makicamel/items/af2cdbdffe65eaf5d24d

・Docker for Windows で Rails 6 + MySQL 8 の開発環境を構築する
https://qiita.com/y-kawaguchi/items/64c69967dc86efd31a57