どうも、りーずです。
Windows10 + Docker環境でRuby on Railsの環境を作る方法です。
DockerというのはWindowsやMacでLinuxの仮想環境をカンタンに作れるもので、いまではアプリをインストールするだけで使えるようになります。
詳しくは
こちらの記事をどうぞ。
さて、このDesktop for Windowsをインストールし、Dockerが起動できるようになってから実際にRuby on RailsをDocker経由で動かす方法です。
実際に動作した時にツイートしたものがこちら。
docker-compose.ymlの
image: mysql:5. # MySQLの5.7を使用
を
image: mysql:5.7
にしたら動いた。なんとも簡単…【Windows】DockerでRuby on Rails開発環境構築方法https://t.co/K1JUnopBXq
— りーず Leez(そーめる) (@so_meru) May 8, 2021
ツイートに書いてあるものがすべてです。
【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 requires Ruby version >= 2.2, < 2.7. dev. The current ruby version is 2.7.3.183.”
(mysql2はRubyのバージョン >= 2.2、<2.7が必要です。あなたのRubyのバージョンは2.7.3です)ちなみにmysql2のgithubを見てみたら2019年から更新されてない。https://t.co/upySAG0Kzv pic.twitter.com/bvvC68Qhfd
— りーず Leez(そーめる) (@so_meru) April 29, 2021
Railsはmysql2の更新が2019年でストップしてるからMySQL・MariaDB勢にはつらいものがあるな。Ruby2.6までしか使えないとは。
Ruby3系試してみたかった。— りーず Leez(そーめる) (@so_meru) April 29, 2021
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