LoginSignup
2
5

More than 5 years have passed since last update.

MySQLとRuby on Railsの開発環境をDocker for Windowsで作ってみた

Last updated at Posted at 2018-11-10

ご挨拶

初心者ですが備忘録として今後も定期的に投稿するのが目標ですので温かく見守って頂けると幸いです!

背景

今回、後学のためにRailsの環境をDockerで立ち上げようとしたところ、参考にした記事に思わぬ落とし穴(記事が悪かったわけではありません)があり、手間取ってしまったので、そちらの回避策も含め改めて手順を整理してみました!
Dockerのインストール方法や各種コマンドの説明は割愛させて頂きますのでご容赦下さい。
以下は参考にさせていただいた記事になります。

DockerのQuickstart:Compose and Railsをやってみた

事前準備

任意のディレクトリ内にRails用のディレクトリを作成し、その配下に以下のファイルを作成してください。

  • Dockerfile
  • docker-compose.yml
  • Genfile
  • Genfile.lock

作成が完了したら各ファイル内に以下の記述を行います。

Dockerfile
FROM ruby:2.5.1
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /docker_rails
WORKDIR /docker_rails
ADD Gemfile /docker_rails/Gemfile
ADD Gemfile.lock /docker_rails/Gemfile.lock
RUN bundle install
ADD . /docker_rails
docker-compose.yml
version: '2'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/docker_rails
    ports:
      - "3000:3000"
    depends_on:
      - db
Gemfile
source 'https://rubygems.org'
gem 'rails', '5.2.1'

Gemfile.lockはからのままで大丈夫です。

以上で、準備は完了です!

ビルド

PowerShellを開き、今回作成したディレクトリまで移動したら以下のコマンドを打っていきましょう!

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

次に/config/database.ymlを修正します。

database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password:
  host: db

development:
  <<: *default
  database: docker_rails_development

test:
  <<: *default
  database: docker_rails_test

production:
  <<: *default
  database: docker_rails_production
  username: docker_rails
  password: <%= ENV['DOCKER_RAILS_DATABASE_PASSWORD'] %>

今度はPowerShellに戻り、コマンド「docker-compose up」を実行します。

docker-compose up

最後に、別のPowerShellを開き、DBを作成します。

docker-compose run web rails db:create

localhost:3000でアクセスできればビルド成功です!

まとめ

参考にさせていただいた記事(2017年3月投稿)ではMySQLを呼び出す際に、ver等の指定をしていないのですが、MySQLは今年(2018年)の春に最新ver8.0をリリースしており、それに伴って認証形式の選択ができるようになったそうです。
その為、別途設定を行わないとエラーが発生しアクセスどころかDBの作成もできません!
ただ、今回はビルドし、アクセスすることを優先した為に、あえて踏み込まず、MySQLのverを指定し回避しています。
今後、時間を見つけてMySQL8.0対応できたらなあ、と思いますが、先に手を付けたいものがある為、とりあえずは後回しに。。。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5