2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rails + mariadb on Dockerの環境構築(Docker for Mac)

Posted at

はじめに

フルリモートのイケてるフリーランスを目指すためにRailsの勉強を始める。せっかくなんでDockerも覚える。基本的には先人達のコピペだけど微妙に詰まったので備忘として残しとく。

参考にしたページ

丁寧すぎるDocker-composeによるrails + MySQL on Dockerの環境構築(Docker for Mac)
https://qiita.com/azul915/items/5b7063cbc80192343fc0

DockerでRuby on Railsの開発をしよう
https://qiita.com/saitoeku3/items/b1aa2ae143624e551aea

参考というかほぼそのまま。こちらのページのが丁寧に書いてあります。

環境

  • MacOS
  • Ruby 2.6.3
  • Rails 5.2.3
  • mariadb 10.3

手順

プロジェクトのディレクトリを作成

$ mkdir sampleApp
$ cd sampleApp

Dockerfileを作成

sampleApp/Dockerfile
FROM ruby:2.6.3
ENV LANG C.UTF-8

RUN apt-get update -qq && apt-get install -y \
    build-essential \
    nodejs \
 && rm -rf /var/lib/apt/lists/*

RUN gem install bundler

WORKDIR /tmp
ADD Gemfile Gemfile
ADD Gemfile.lock Gemfile.lock
RUN bundle install

ENV APP_HOME /app_name
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME
ADD . $APP_HOME

Gemfileを作成

sampleApp/Gemfile
source 'https://rubygems.org'
gem 'rails', '~> 5.2.3'

Gemfile.lockを作成

$ touch Gemfile.lock  # 中身は空でOK

docker-compose.ymlを作成

docker-compose.yml

version: '3'

services:
  db:
    image: mariadb:10.3
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: root
    ports:
      - '3306:3306'
    volumes:
      - mysql_data:/var/lib/mysql
  web:
    build: .
    ports:
      - "3000:3000"
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app_name
      - bundle:/usr/local/bundle
    depends_on:
      - db
volumes:
  bundle:
  mysql_data:

rails newを実行

$ docker-compose run web rails new . --foce --database=mysql --skip-bundle

database.ymlを修正

sampleApp/database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: password  # docker-compose.ymlのMYSQL_ROOT_PASSWORD
  host: db  # docker-compose.ymlのservice名

dockerを起動

$ docker-compose build  # コンテナをビルド
$ docker-compose up -d # コンテナの一斉起動(オプションに-dを付けるとデーモンで起動)

起動の確認

http://localhost:3000 にアクセスしてこの画面が出ればOK
スクリーンショット 2019-07-21 1.29.04.png

詰まったこと

docker-composeの設定を変えながら行なっていたが、DBのコンテナがなかなか上手く立ち上がらず。すると、初回起動時のみに行われる設定があるとのことで、DBのコンテナを削除してから再度実行したら上手く行った。

参考:DockerオフィシャルのMySQL(MariaDB)コンテナの挙動をDockerfile周辺から読み解く
https://qiita.com/kazuyoshikakihara/items/f0c5158c700bb7a5df9f

おしまい

品質の低いコピペ記事なんて書いてんじゃねーよ!とか言われたら消しますm(_ _)m

2
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?