ご挨拶
初心者ですが備忘録として今後も定期的に投稿するのが目標ですので温かく見守って頂けると幸いです!
背景
今回、後学のためにRailsの環境をDockerで立ち上げようとしたところ、参考にした記事に思わぬ落とし穴(記事が悪かったわけではありません)があり、手間取ってしまったので、そちらの回避策も含め改めて手順を整理してみました!
Dockerのインストール方法や各種コマンドの説明は割愛させて頂きますのでご容赦下さい。
以下は参考にさせていただいた記事になります。
DockerのQuickstart:Compose and Railsをやってみた
事前準備
任意のディレクトリ内にRails用のディレクトリを作成し、その配下に以下のファイルを作成してください。
- Dockerfile
- docker-compose.yml
- Genfile
- Genfile.lock
作成が完了したら各ファイル内に以下の記述を行います。
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
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
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を修正します。
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対応できたらなあ、と思いますが、先に手を付けたいものがある為、とりあえずは後回しに。。。