LoginSignup
1
2

More than 3 years have passed since last update.

プログラム好き大学生のDocker+Ruby on rails5で環境構築とgitの設定(初心者向け)

Posted at

書いてあること

・ Docker+Ruby on rails5での環境構築の手順
・ gitの初期設定とGitHubの連携

こちらを参考にしています。
詳しく知りたい方はこっちを参考にしてくださいhttps://qiita.com/azul915/items/5b7063cbc80192343fc0

メモ程度にしか書いてません。。。

環境

・mac OS Catalina バージョン 10.15.2
・iTerm2
・Visual Studio code バージョン: 1.41.1
・Ruby 2.6.3
・rails5.2.2

ファイル構成

ワークスペース(自分のファイル内が以下のようになります)

sampleApp ---- Dockerfile
           |-- Gemfile
           |-- Gemfile.lock
           |-- README.md
           |-- Rakefile
           |-- app
           |-- bin
           |-- config ---- application.rb
           |           |-- boot.rb
           |           |-- cable.yml
           |           |-- credentials.yml.enc
           |           |-- database.yml
           |           |-- environment.rb
           |           |-- environments
           |           |-- initializers
           |           |-- locales
           |           |-- master.key
           |           |-- puma.rb
           |           |-- routes.rb
           |           |-- spring.rb
           |           |-- storage.yml
           |
           |-- config.ru
           |-- db
           |-- docker-compose.yml
           |-- lib
           |-- log
           |-- package.json
           |-- public
           |-- storage
           |-- test
           |-- tmp
           |-- vendor

1.プロジェクトの作業ディレクトリを作成し移動

terminal
$mkdir sampleapp
$cd sampleapp

2.作業ディレクトリでDockerfileを作成・編集

自分はvscodeを使用しているためターミナルにcode Dockerfileとしているが、自分のエディタで作業ディレクトリに移動して、ファイルを作成し、編集しても同じなので、よろしくお願いします。

terminal
$ code Dockerfile
Dockerfile
# コピペでOK, app_nameもそのままでOK
# 19.01.20現在最新安定版のイメージを取得
FROM ruby:2.6.3

# 必要なパッケージのインストール(基本的に必要になってくるものだと思うので削らないこと)
RUN apt-get update -qq && \
    apt-get install -y build-essential \ 
                       libpq-dev \        
                       nodejs           

# 作業ディレクトリの作成、設定
RUN mkdir /app_name 
##作業ディレクトリ名をAPP_ROOTに割り当てて、以下$APP_ROOTで参照
ENV APP_ROOT /app_name 
WORKDIR $APP_ROOT

# ホスト側(ローカル)のGemfileを追加する(ローカルのGemfileは3.で作成)
ADD ./Gemfile $APP_ROOT/Gemfile
ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock

# Gemfileのbundle install
RUN bundle install
ADD . $APP_ROOT

3.Gemfileを作成・編集

こちらもエディタでファイルを作成して、編集してもらって大丈夫です。
GemfileはBunder用の設定ファイルでこれを元にgemの依存関係を示した、Gemfile.lockを作成します

terminal
$code Gemfile
Gemfile
source 'https://rubygems.org'
gem 'rails', '5.2.2'

4.空のGemfile.lockを作成する

エディタで作成するだけでもOKです。

teminal
$ touch Gemfile.lock

5.docker-compose.ymlを作成・編集

ymlファイルを以下の例をコピペして作成、MYSQL_ROOT_PASSWORDとMYSQL_DATABASEで、任意のパスワード(7.で同じものを設定する)とデータベース名を設定

docker-compose.yml
version: '3'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: root
    ports:
      - "3306:3306"

  web:
    build: .
    command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/app_name
    ports:
      - "3000:3000"
    links:
      - db

6.rails newを実行する

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

7.database.ymlを修正する

場所は/sampleApp/config/database.ymlです。

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名

8.Dockerの起動

現在のディレクトリはsampleappの階層で行います。

terminal
$ docker-compose build # コンテナをビルド

# -dオプションをつけてバックグラウンド実行するとこの後新しいシェルを立ち上げる必要がない
$ docker-compose up # コンテナの一斉起動

9.DBを作成

新しいターミナルを開き/sampleappで実行する

terminal
$ docker-compose run web rails db:create

10.コンテナが立ち上がってるのかを確認する

terminal
$ docker-compose ps
     Name                    Command               State                 Ports
--------------------------------------------------------------------------------------------
sample_db_1                             Up     
sample_web_1                                       Up      

#StateがUpになっていればokです。

11.ブラウザで確認

image.png

12.gitとGitHubの設定

GitHub (https://github.com) 
でnew repositoriesを作成しておくこと

sampleappディレクトリ内でやる

terminal
git init
git add .
git commit -m "first commit"
git remote add origin GitHubURL
git push -u origin master
1
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
1
2