2020.01.20
[windows向け]初心者向けRuby on RailsでDocker環境構築
こんにちは。Maromaroのtakaです。
はじめに
Dockerの導入で手間取ってしまったので、備忘録として書きます。
WindowsでRuby on railsがDockerのコンテナ上で起動するところまでになります。
Macは特に問題はないのですが、WindowsだとWindows10pro以外はDocker for Windowsが入れられないので、環境の構築が若干変わるため、かなりハマります。(実体験)
※この記事は超初心者向けです。(私自身がDocker超初心者なので…)
使用する環境
- windows10pro
- Ruby2.5.3
- Rails5.2.2
- MySQL5.7
- Docker for Windows
手順
※Docker for WindowsをインストールしたらDockerのsettingで左のメニューにShared Driveが存在するか見てください。
その項目がないと(ドライブも設定した状態)Rails newしてもフォルダが一時的にDockerに上げられるだけで、Localに保存されません
まず適当な場所にフォルダを作ります。
今回フォルダ名は Sample とします。
フォルダの中に以下のファイルを作成します。
※拡張子無しのファイル作成の際はtxtファイル等で作成し、拡張子を変更しても構いません。
(ちなみに拡張子無しファイルは 保存するときにファイル名を ” ” ダブルクォーテーションで囲めば出来ます。)
ファイル名: Dockerfile
Docker上で動作させるコンテナの構成情報を記述するためのファイル。
#Dockerfile FROM ruby:2.5.3 RUN apt-get update -qq && \ apt-get install -y build-essential \ libpq-dev \ nodejs RUN mkdir /app_name ENV APP_ROOT /app_name WORKDIR $APP_ROOT ADD ./Gemfile $APP_ROOT/Gemfile ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock RUN bundle install ADD . $APP_ROOTファイル名: Gemfile
Ruby on Rails で使用するgemのリスト#Gemfile source 'https://rubygems.org' gem 'rails', '5.2.2'ファイル名: Docker-compose.yml
コンテナの設定を記載したファイル 基本的にcompose-upのタイミングで読み込まれる。
記載された複数のコンテナが立ち上がる。
下記のだと、webがrails本体のコンテナ、dbがデータベースのコンテナという認識になる。(恐らく)#Docker-compose.yml version: '3' services: db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: root ports: - "3308:3308" web: build: . command: rails s -p 3000 -b '0.0.0.0' volumes: - .:/app_name ports: - "3000:3000" links: - dbファイル名: Gemfile.lock
build等で更新されたGemfileのgemとバージョン等が記載されているファイル。#Gemfile.lock #中身は空でOK上記4ファイルを作成したフォルダに入れてください。
現時点でフォルダ構成は以下になると思われます。sample ---- Dockerfile |-- Gemfile |-- Gemfile.lock |-- docker-compose.yml
コマンドプロンプト等で以下のコマンドを順に入力しましょう。
Rails Newを実行docker-compose run web rails new . --force --database=mysql --skip-bundleコンテナをビルド
docker-compose buildコンテナを起動
docker-compose up -dデータベースの作成
docker-compose run web rails db:create
その後ブラウザで localhost:3000 にアクセスし、表示できているか確認しましょう。
以下の画面が表示されれば環境の構築は完了です。