LoginSignup
2
5

More than 3 years have passed since last update.

Rails環境構築 with Docker

Last updated at Posted at 2021-01-10

参考サイト

Docker超入門 :きよとのプログラミング大学
丁寧すぎるDocker-composeによるrails5 + MySQL on Dockerの環境構築(Docker for Mac)

環境

Mac OS
docker-compose 1.27.4
Mysql 8.0
ruby 2.7
rails 6.1.0

ファイル作成・記述

terminal.
 ~ % cd Desktop
Desktop % mkdir rails_on_docker
Desktop % cd rails_on_docker
rails_on_docker % tree  
├── Dockerfile
├── docker-compose.yml
└── src
    └── Gemfile
1 directory, 3 files
rails_on_docker % code .

docker-compose-yml

docker-compose-yml
version: '3'
# 管理するコンテナの記述
services:
  # データベース
  db:
    image: mysql:8.0
    # Mysqlの認証設定
    command: --default-authentication-plugin=mysql_native_password
    volumes:
    # ローカルのデータ:dockerのデータ 同期するための記述
      - ./src/db/mysql_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
  # rails
  web:
    # ディレクトリ直下のDockerfileを参照
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
    # ローカルのデータ:dockerのデータ 同期するための記述
      - ./src:/app
    ports:
    # ローカルのポート:dockerのポート
      - "3000:3000"
    depends_on:
    # Myaqlに接続するための記述
      - db

Dockerfile

Dockerfile
# ベースイメージの指定
FROM ruby:2.7

# 必要なライブラリのインストール
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
  && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
  && apt-get update -qq \
  && apt-get install -y nodejs yarn 
#   作業ディレクトリの指定
WORKDIR /app
# ソース以下のファイルをコピー
COPY ./src /app
# rubyに必要なgemのインストール
RUN bundle config --local set path 'vendor/bundle' \
  && bundle install

Gemfile

Gemfile
# railsのgemをインストールするための雛形
source 'https://rubygems.org'

gem 'rails','~> 6.1.0'

railsのインストール

使用するコマンド

terminal.
% docker-compose run <サービス> <コマンド>

railsのインストール

terminal.
rails_on_docker % docker-compose run web rails new . --force --database=mysql  // dbをmysqlに指定しrailsのインストール --force(強制的に実行オプション)
.
.
.
Webpacker successfully installed 🎉 🍰

イメージのビルド

terminal.
rails_on_docker % docker-compose build 

新しく作成されたdatabase.ymlに追記

database.yml
default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: password  //記述
  host: db  //記述

データベースの作成

terminal.
rails_on_docker % docker-compose run web rails db:create  

起動

terminal.
rails_on_docker % docker-compose up

スクリーンショット 2021-01-10 15.41.57.png

まとめ

途中エラーが幾つか発生しましたが、DockerはもちろんRails,Mysqlを学ぶいい機会となりました。
次は本番環境(heroku)へのデプロイもまとめます。

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