LoginSignup
1
1

More than 1 year has passed since last update.

Dockerで、Rails 6系とMySQL8の開発環境の構築(OS : mac)

Last updated at Posted at 2022-03-23

Rails 6系とMySQL8 で開発環境を作る

docker-compose upでrails serverを起動できるようにすること
ホストのファイルシステムとコンテナのファイルシステムを同期させること
勉強中の初学者です。誤りなどのご指摘いただければ嬉しいです!

流れ

  1. 各種ファイルの作成
  2. イメージのBuild
  3. rails new でアプリ作成 -> Gemfileが上書きされる
  4. 新しいGemfileでイメージの再ビルド
  5. database.yml の設定,DB生成
  6. コンテナ起動&サーバ起動
  7. 確認

各種ファイル作成

下記を作成します。
dockerfile
docker-compose.yml
Gemfile
Gemfile.lock

$ mkdir docker_rail_mysql
$ cd docker_rail_mysql 

dockerfile作成

FROM ruby:2.6

RUN apt-get update && apt-get install -y \
    build-essential \
    libpq-dev \
    nodejs

RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && apt-get install -y nodejs  

RUN npm install --global yarn

WORKDIR /docker_rail_mysql

COPY Gemfile Gemfile.lock /docker_rail_mysql/
RUN bundle install
RUN rm -f tmp/pids/server.pid

CMD ["rails","s","-b","0.0.0.0"]

docker-compose.yml作成

docker-compose.yml
version: '3'

volumes:
  db-data:

services:
  web:
    build: .
    ports:
      - '3000:3000'
    container_name: 'web'
    volumes:
      - '.:/docker_rail_mysql'
    tty: true
    stdin_open: true
    depends_on:
      - db

  db:
    image: mysql:8
    container_name: 'db_mysql'

    volumes:
      - 'db-data:/var/lib/mysql'
    environment:
      - 'MYSQL_ROOT_PASSWORD=password'
      - 'TZ=Asia/Tokyo'
    ports:
      - 3306:3306

Gemfile作成

source 'https://rubygems.org'
gem 'rails', '~>6'

Gemfile.lockを作成

Gemfile.lockの内容はありません。

コマンド  

まずは、docker-composeで、imageとcontainerを作ります。

$ docker-compose run web bash

コンテナー上でのコマンド

rails newコマンドで、Gemfileは上書きされます。

$ rails new . -force --database=mysql --webpacker  
$ exit

config/database.yml 変更

default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: <%= ENV.fetch("MYSQL_USERNAME", "root") %>
  password: <%= ENV.fetch("MYSQL_PASSWORD", "password") %>
  host: <%= ENV.fetch("MYSQL_HOST", "db") %>

development:
  <<: *default
  database: docker_development

test:
  <<: *default
  database: docker_test

production:
  <<: *default
  database: docker_homework_production
  username: root
  password: <%= ENV['DOCKER_DATABASE_PASSWORD'] %>

コマンド

貧弱なGemfileで作られた最初のimageは削除して、
新しいGemfileでもう1回buildしましょう。

$ docker-compose down
$ docker-compose up --build -d
$ docker-compose run web rails db:create
$ docker-compose up 

image.png

host側のdocker-homeworkフォルダの内容をgithubにpushしておくと、
下記のコマンドで、どこでも同じ環境構築ができるようになります。

$ git clone -b [ブランチ名] https://github.com/〜
$ cd docker 
$ docker-compose run web rails db:create 
$ docker-compose up

最後に

これで構築完了です。
かなり時間がかかりましたが、無数のエラーを出しながら、dockerにもっと慣れてきたと思います。
参考になったら嬉しいです。

参考にしたサイト

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